我想$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)) { ... }
我想$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)) { ... }
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))
应该够了。
我个人应用的经验法则:
null
:
$table
可能不存在,请使用isset($table) && array_key_exists('key', $table)
.array_key_exists('key', $table)
.isset($table['key'])
.在 1.1 和 1.2 的情况下,技术上可能$table
不是数组;在这种情况下,您还需要添加is_array($table)
...但是如果它走到这一步,恕我直言,还有其他问题。