Hi Anthony:
> isset($foo['bar'][1]['baz']) && is_array($foo['bar'][1])
>
> You don't need to check each level. Only the one above the key you're
> looking at.
Excellent thinking. One hitch... that goes fatal in 5.3 if $foo is a string.
Here's how to write the test so it works the same way under 5.3 and 5.4:
<?php
function test2($id, $foo) {
echo "ID $id -- ";
var_dump(is_array($foo)
&& isset($foo['bar'][1]['baz']) && is_array($foo['bar'][1]));
// The following goes fatal on test 80.
//var_dump(isset($foo['bar'][1]['baz']) && is_array($foo['bar'][1]));
}
test2(10, array('bar' => array(1 => array('baz' => 'string'))));
test2(20, array('bar' => array(1 => array('boo' => 'string'))));
test2(30, array('bar' => array(1 => 'string')));
test2(40, array('bar' => array(2 => 'string')));
test2(50, array('boo' => array(1 => 'string')));
test2(60, array('bar' => 'string'));
test2(70, array('boo' => 'string'));
test2(80, 'string');
?>
Thanks,
--Dan
--
T H E A N A L Y S I S A N D S O L U T I O N S C O M P A N Y
data intensive web and database programming
http://www.AnalysisAndSolutions.com/
4015 7th Ave #4, Brooklyn NY 11232 v: 718-854-0335 f: 718-854-0409
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php