在使用其值之前检查表键存在的正确方法是什么?

时间:2014-07-08 10:07:39

标签: php arrays array-key-exists

我想在使用之前检查$table['key']是否存在。这样做的正确方法是什么?

我已经看过很多不同的代码,但我不知道它们是否完全相同且正确。以下是一些例子:

// 1
if(isset($table['key'])) { ... }

// 2
if(isset($table) and isset($table['key'])) { ... }

// 3
if(isset($table) and array_key_exists('key',$table)) { ... }

2 个答案:

答案 0 :(得分:2)

if (isset($table['key']))

if (isset($table) and isset($table['key']))

这是多余的,单独检查两者都没有优势。

if (isset($table) and array_key_exists('key', $table))

是的,这也是一个很好的方法,如果 $table['key']可以保持null价值并且你仍然对它感兴趣。如果值为isset($table['key'])false将返回null,即使它存在。您可以使用array_key_exists来区分这两种情况。

话虽如此,isset($table)不是你应该做的事情,因为你应该事先控制宣告$table。换句话说,除了错误之外,$table可能不存在是不可想象的,所以你不应该检查它的存在。只需if (array_key_exists('key', $table))即可。

答案 1 :(得分:1)

我个人申请的经验法则:

  1. 如果与密钥对应的值可能为null
    1. 如果$table可能不存在,请使用isset($table) && array_key_exists('key', $table)
    2. 否则,请使用array_key_exists('key', $table)
  2. 在所有其他情况下,请使用isset($table['key'])
  3. 在1.1和1.2的情况下,技术上可能$table不是数组;在这种情况下,您还需要添加is_array($table) ...但是如果它到目前为止,还有其他错误的东西。