#28156 [Opn->Sus]: E_WARN instead E_ERROR when doing $a = 'asdf'; echo is_array($a['foo']['asdf']
| From: | helly@php.net | Date: | Mon, 26 Apr 2004 18:37:14 +0000 |
| Subject: | #28156 [Opn->Sus]: E_WARN instead E_ERROR when doing $a = 'asdf'; echo is_array($a['foo']['asdf'] | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-58815@lists.php.net to get a copy of this message | ||
ID: 28156
Updated by: helly@php.net
Reported By: info at gramba dot tv
-Status: Open
+Status: Suspended
Bug Type: Feature/Change Request
-Operating System: debian
+Operating System: *
-PHP Version: 5CVS-2004-04-26 (dev)
+PHP Version: 5.0.0.0
-Assigned To:
+Assigned To: helly
New Comment:
We are considering a new operator or internal function to take care of
this after PHP 5.0. A patch is here:
http://marcus-boerger.de/php/ext/ze2/ze2-ifsetor-20040416-4.diff.txt
Syntax: ifsetor( <var> [, <exp> ])
Semantic: check whether variable <var> exists and return it. If it not
exists evaluate expression <exp> which defaults to NULL and return that
value instead.
Comment: <var> may also be an array subscription of any depth.
Previous Comments:
------------------------------------------------------------------------
[2004-04-26 15:18:52] info at gramba dot tv
Description:
------------
$a = 'asdf';
echo is_array($a['foo']['asdf']);
is completly invalid, unfortunatly many applications deal with the fact
that some offsets simply "may" not exist.
workaround would be
if (isset($a['foo']['asdf']) &&
is_array($a['foo']['asdf']) {
....
but this would bloat the code a lot
Reproduce code:
---------------
// /* E_ERROR Invalid offset */
$a = 'asdf';
echo is_array($a['foo']['asdf']);
Expected result:
----------------
an E_WARNING instead of E_ERROR which is suppressable
Actual result:
--------------
E_ERROR
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=28156&edit=1