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