在PHP数组中查找元素(如果存在)

时间:2012-06-26 14:18:10

标签: php

我想知道是否有更优雅的方法来做到这一点:

$foo = (isset($bar) and array_key_exists('meh', $bar)) ? $bar['meh'] : '';

如果删除isset部分,如果$bar不是数组,PHP会发出警告,如果删除array_key_exists部分,PHP会在{{1}发出警告键不在数组中。是否有一种更优雅,无警告的方式来达到同样的目的?

2 个答案:

答案 0 :(得分:2)

您可以直接引用该密钥。在isset内,如果$ bar未定义,它甚至不会抛出异常。

$foo = isset($bar['meh']) ? $bar['meh'] : '';

array_key_existsisset之间的区别在于,如果密钥对应isset值,FALSE将返回NULL。在上面的代码中,NULL值会导致$foo开始空字符串,而不是NULL。如果这是一个问题,那么您目前的方法将是最好的。

答案 1 :(得分:2)

根据您提到的警告,您可以完全采取“保护”代码所需的步骤。

然而,警告是有原因的。通常,如果可以防止未尝试访问的变量未初始化的情况,则检查更有意义。