我想快速识别数组中是否存在某个键,以避免抛出错误。
例如,我可能有一个像这样的数组
$arr['f']['b']['g'] = array( 'a', 'b', 'c', ) ;
或者数组在$ arr ['f'] ['b']中可能没有任何变量:
$arr['f']['x'] = array() ;
当引用$ arr ['f'] ['b'] ['g']的(可能)内容时,如何避免重复测试?
if ( isset( $arr['f'] ) &&
isset( $arr['f']['b'] ) &&
isset( $arr['f']['b']['g'] ) /* ... yawn */ ) {
/* blah */
}
必须有一种更简洁的方法来确定我所引用的给定数组值是否存在?看起来过于冗长,不得不测试我寻求的价值以及它的所有祖先的存在。在某些情况下,有道理,但不是全部。
例如:它可能代表用户 - > session->购物车,我想要一种方法来快速检查购物车是否有条目,而不必每次都包含一个支票对于用户是否存在,那么会话是否存在,那么 cart 是否存在,那么......
编辑:我不是在寻找“键值名为'g'的数组值是否存在”,因为“具有祖先f => b => g的数组值是否存在”。
答案 0 :(得分:27)
以下内容将按预期运行:
if(isset($a['a']['b']['c']))
如果未定义任何这些元素,isset()
将返回false。
答案 1 :(得分:0)
在array_search的评论中,他们拥有多维搜索的代码。这可能有所帮助。