首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >要确定PHP中是否存在数组键,哪种方法更快更好?

要确定PHP中是否存在数组键,哪种方法更快更好?
EN

Stack Overflow用户
提问于 2009-03-31 06:17:31
回答 7查看 121.1K关注 0票数 210

考虑这两个例子...

代码语言:javascript
复制
$key = 'jim';

// example 1
if (isset($array[$key])) {
    // ...
}

// example 2    
if (array_key_exists($key, $array)) {
    // ...
}

我有兴趣知道这两种方法中哪一种更好。我一直使用第一个例子,但在这个网站上看到很多人使用第二个例子。

那么,哪一个更好呢?更快?更清晰的意图?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-03-31 06:23:40

isset()更快,但它与array_key_exists()不同。

即使值为NULLarray_key_exists()也只检查键是否存在。

而如果键存在并且值为NULL,则isset()将返回false

票数 323
EN

Stack Overflow用户

发布于 2014-02-14 00:02:32

如果你对我最近做的一些测试感兴趣:

https://stackoverflow.com/a/21759158/520857

摘要:

代码语言:javascript
复制
| 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%
票数 41
EN

Stack Overflow用户

发布于 2009-03-31 06:25:18

嗯,主要区别在于isset()不会为对应于null值的数组键返回true,而array_key_exists()会。

运行一个small benchmark显示isset()它更快,但它可能不完全准确。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/700227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档