我想在使用之前检查$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)) { ... }
答案 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)
我个人申请的经验法则:
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)
...但是如果它到目前为止,还有其他错误的东西。