Edit report at https://bugs.php.net/bug.php?id=28156&edit=1

 ID:                 28156
 Updated by:         ni...@php.net
 Reported by:        info at gramba dot tv
 Summary:            E_WARN instead E_ERROR when doing  $a = 'asdf'; echo
                     is_array($a['foo']['asdf']
-Status:             Suspended
+Status:             Closed
 Type:               Feature/Change Request
-Package:            Feature/Change Request
+Package:            *General Issues
 Operating System:   *
 PHP Version:        5.0.0.0
 Assigned To:        helly
 Block user comment: N
 Private report:     N

 New Comment:

In PHP 5.4 this will output:

Warning: Illegal string offset 'foo' in /home/nikic/dev/test.php on line 4

Warning: Illegal string offset 'asdf' in /home/nikic/dev/test.php on line 4

Thus closing.


Previous Comments:
------------------------------------------------------------------------
[2007-09-25 11:24:46] ofih at fhd dot ko

http://www.meta-fx.com 
forex

------------------------------------------------------------------------
[2004-04-26 20:37:13] he...@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 https://bugs.php.net/bug.php?id=28156&edit=1

Reply via email to