#28156 [Com]: E_WARN instead E_ERROR when doing $a = 'asdf'; echo is_array($a['foo']['asdf']
| From: | ofih at fhd dot ko | Date: | Tue, 25 Sep 2007 11:24:47 +0000 |
| Subject: | #28156 [Com]: 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-117838@lists.php.net to get a copy of this message | ||
ID: 28156
Comment by: ofih at fhd dot ko
Reported By: info at gramba dot tv
Status: Suspended
Bug Type: Feature/Change Request
Operating System: *
PHP Version: 5.0.0.0
Assigned To: helly
New Comment:
http://www.meta-fx.com
forex
Previous Comments:
------------------------------------------------------------------------
[2004-04-26 20:37:13] helly@php.net
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.
------------------------------------------------------------------------
[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