|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2014-09-26 21:24 UTC] mathiasgrimm at gmail dot com
Description: ------------ according to the manual(http://ie1.php.net/manual/en/language.types.array.php): Note: Attempting to access an array key which has not been defined is the same as accessing any other undefined variable: an E_NOTICE-level error message will be issued, and the result will be NULL. Test script: --------------- $a ['a'] = null; $tmp = $a['a']['b']; // nothing $tmp = $a['a']['b']['c']; // nothing // this works (throw an E_NOTICE) fine $a ['a'] = array(); $tmp = $a['a']['b']; // Undefined index: b $tmp = $a['a']['b']['c']; // Undefined index: b Expected result: ---------------- assert(isset($php_errormsg) === true); Actual result: -------------- Undefined index: b PatchesPull Requests
Pull requests:
HistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 21:00:01 2025 UTC |
Discovered this problem when using the @ sign to suppress errors when trying to access an undefined array index and checking the $php_errormsg but for my surprise that never happens if the assigned value is NULL... and according to the documentation this should happen. I was implementing an array_key_exist_recursive ... public static function exists($mIndex, $aSource) { $aPath = explode(self::$sSeparator, $mIndex); $sEval = "\$bExists = @\$aSource['" . implode("']['", $aPath) . "'];"; eval($sEval); return !isset($php_errormsg); }