如何检查是否存在深层数组值

时间:2009-05-07 00:29:20

标签: php

我想快速识别数组中是否存在某个键,以避免抛出错误。

例如,我可能有一个像这样的数组

$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的数组值是否存在”。

2 个答案:

答案 0 :(得分:27)

以下内容将按预期运行:

if(isset($a['a']['b']['c']))

如果未定义任何这些元素,isset()将返回false。

答案 1 :(得分:0)

array_search的评论中,他们拥有多维搜索的代码。这可能有所帮助。