确定 PHP 中是否存在数组键的更快、更好的方法是什么?

2022-08-30 06:18:16

考虑以下 2 个示例...

$key = 'jim';

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

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

我很想知道其中任何一个是否更好。我一直使用第一个,但看到很多人在这个网站上使用第二个示例。

那么,哪个更好呢?更快?更明确的意图?


答案 1

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

array_key_exists()纯粹检查键是否存在,即使值为 。NULL

如果键存在且值为 ,则将返回isset()falseNULL


答案 2

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

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%

推荐