您可以使用语言构造
isset或函数
array_key_exists。
isset应该更快一些 (因为它不是函数) ,但是如果元素存在并且具有value,则将返回false
NULL。
例如,考虑以下数组:
$a = array( 123 => 'glop', 456 => null, );
和这三个测试,依赖于
isset:
var_dump(isset($a[123]));var_dump(isset($a[456]));var_dump(isset($a[789]));
第一个会得到您( 该元素存在,并且不为null) :
boolean true
虽然第二个可以帮助您 (该元素存在,但为null) :
boolean false
最后一个会让你 (该元素不存在) :
boolean false
另一方面,
array_key_exists像这样使用:
var_dump(array_key_exists(123, $a));var_dump(array_key_exists(456, $a));var_dump(array_key_exists(789, $a));
您将获得这些输出:
boolean trueboolean trueboolean false
因为在前两种情况下,元素存在-即使在第二种情况下为null。而且,当然,在第三种情况下,它不存在。
对于像您这样的情况,我通常会使用
isset,考虑到我永远不会在第二种情况下…但是,现在选择要使用哪种方式取决于您;-)
例如,您的代码可能会变成这样:
if (!isset(self::$instances[$instanceKey])) { $instances[$instanceKey] = $theInstance;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)