考虑这两个例子...
$key = 'jim';
// example 1
if (isset($array[$key])) {
// ...
}
// example 2
if (array_key_exists($key, $array)) {
// ...
}
我有兴趣知道这两种方法中哪一种更好。我一直使用第一个例子,但在这个网站上看到很多人使用第二个例子。
那么,哪一个更好呢?更快?更清晰的意图?
发布于 2009-03-31 06:23:40
isset()
更快,但它与array_key_exists()
不同。
即使值为NULL
,array_key_exists()
也只检查键是否存在。
而如果键存在并且值为NULL
,则isset()
将返回false
。
发布于 2014-02-14 00:02:32
如果你对我最近做的一些测试感兴趣:
https://stackoverflow.com/a/21759158/520857
摘要:
| Method Name | Run time | Difference
=========================================================================================
| NonExistant::noCheckingTest() | 0.86004090309143 | +18491.315775911%
| NonExistant::emptyTest() | 0.0046701431274414 | +0.95346080503016%
| NonExistant::isnullTest() | 0.88424181938171 | +19014.461681183%
| NonExistant::issetTest() | 0.0046260356903076 | Fastest
| NonExistant::arrayKeyExistsTest() | 1.9001779556274 | +209.73055713%
发布于 2009-03-31 06:25:18
嗯,主要区别在于isset()
不会为对应于null值的数组键返回true
,而array_key_exists()
会。
运行一个small benchmark显示isset()
它更快,但它可能不完全准确。
https://stackoverflow.com/questions/700227
复制相似问题