有人知道,这个代码如何回应yahoo
?显然没有第四个数组带有“某事”键,但它一直认为就是这样。错误?特征
$array = array('a' => array('b' => array('c' => 'test')));
echo '<pre>';
var_dump($array);
echo '</pre>';
if (isset($array['a']['b']['c']['something'])) {
echo 'yahoo';
}
答案 0 :(得分:4)
因为PHP认为你正在检查字符串'test'的'某事'位置。请记住,字符串是字符数组。尝试回复$ array ['a'] ['b'] ['c'] ['something']。
:: EDIT ::
我解释了,我没有说它有道理。 :P
答案 1 :(得分:1)
在这种情况下,你想要使用is_array($array['a']['b']['c'])
而不是isset($array['a']['b']['c']['something'])
,或者可能是两者的狡猾组合,以确保在你没有设置时不会出现任何错误重新检查它是否是一个数组。
类似的东西:
if(isset($array['a']['b']['c']['something']) && is_array($array['a']['b']['c'])){ [...] }
答案 2 :(得分:1)
Here已在本期中讨论了PHP的行为,并提供了完全适合您的问题的解决方案。