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

Php 如何检查深度数组值是否存在,php,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'

我想快速识别数组中是否存在密钥,以避免抛出错误

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

$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 */
}
必须有更简洁的方法来确定我引用的给定数组值是否存在?这似乎太冗长了,不必测试我所追求的价值以及它的所有祖先是否存在。在某些情况下,这是有道理的,是的,但不是全部

举个例子:它可能表示,比如说,user->session->cart,在这里我想要一种快速检查购物车是否有条目的方法,而不必检查每个条目是否有用户,然后检查会话是否存在,然后检查购物车是否存在,然后


编辑:我不是在寻找“键名为'g'的数组值是否存在”,而是“祖先为f=>b=>g的数组值是否存在”

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

以下内容将按您的预期工作:

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

如果其中任何一个元素未定义,
isset()
将返回false。

感谢您的回复。该页面上有十几个示例代码块(更多,我没有计算),但我看不出哪一个可以提供高效的解决方案(无论是在简洁性还是性能方面)。将更新问题以澄清我的目标。再次感谢!只是澄清一下,这也安全地测试了
$a
的存在性:如果未设置
$a
,它将返回false。哇,多年来我们都确信这不起作用。Lol.Is
isset($array[$property])
总是比
array\u key\u exists($property,$array)
好吗?@dev.mnr.j
isset()
。如果数组键存在但值为
null
,则
isset
将为您提供
false