ID:               44821
 User updated by:  mcarpent at zenwerx dot com
 Reported By:      mcarpent at zenwerx dot com
 Status:           Open
 Bug Type:         Arrays related
 Operating System: Windows XP
 PHP Version:      5.2.5
 New Comment:

The string example was only used for testing after I found this
particular issue.

Real code was more like this:

function returnNull() {
    return NULL;
}

$foo = returnNull();

// Resolves to null, therefore always false
if ($foo['SomeIndex'] == 1) {
    // Never reached
}

This was a programmer error since it should have been checked for
failure (null), but was left uncaught until the code was changed so that
the function, which should return an array, returned an empty array
instead of null to signify failure.

If this is behaviour by design, it would be helpful for the
documentation about silently casting the object to null to be located
elsewhere as well. I would have never considered looking under the
string documentation for an array issue.


Previous Comments:
------------------------------------------------------------------------

[2008-04-24 16:59:00] florian dot ember at gmail dot com

http://php.net/language.types.string#language.types.string.substr
"Note: Accessing variables of other types using [] or {} silently
returns NULL."

Typecasting only happens when you explicitly do it with (array).

------------------------------------------------------------------------

[2008-04-24 16:50:49] mcarpent at zenwerx dot com

At least this is my understanding from the Array documentation which
states: Converting NULL to an array results in an empty array.

If this is the case and the NULL is converted to an empty array, should
PHP not display a notice for the undefined index.

------------------------------------------------------------------------

[2008-04-24 16:46:36] mcarpent at zenwerx dot com

Description:
------------
Accessing a null value as an array does not produce an error or even a
warning. It resolves to null and the script continues.

Reproduce code:
---------------
<?php

$foo = null;
echo "Foo: {$foo['bar']}";

$foo = array();
echo "Foo: {$foo['bar']}";

?>

Expected result:
----------------
Notice: Undefined index: bar in c:\test\test.php on line 4
Foo: 
Notice: Undefined index: bar in c:\test\test.php on line 7
Foo: 

Actual result:
--------------
Foo: 
Notice: Undefined index: bar in c:\test\test.php on line 7
Foo: 


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=44821&edit=1

Reply via email to