php - array_key_exists($key, $array) 与 !empty($array[$key])

标签 php arrays array-key-exists

我见过很多人做前者,做一个与另一个相比有性能优势吗?或者它只是一个眼睛糖果?我个人每次都使用后者,因为它更短,对我个人而言更具可读性。

最佳答案

其他回复主要关注这两个功能的区别。这是真的,但如果源数组不包含 null0"",...(空值)值,您可以对两个函数的速度进行基准测试:

<?php

function makeRandomArray( $length ) {
    $array = array();
    for ($i = 0; $i < $length; $i++) {
        $array[$i] = rand(1, $length);
    }

    return $array;
}

function benchmark( $count, $function ) {
    $start = microtime(true);
    for ($i = 0; $i < $count; $i++) {
        $function();
    }
    return microtime(true) - $start;
}

$runs = 100000;
$smallLength = 10;
$small = makeRandomArray($smallLength);

var_dump(benchmark($runs, function() {
    global $small, $smallLength;
    array_key_exists(rand(0, $smallLength), $small);
}));
var_dump(benchmark($runs, function() {
    global $small, $smallLength;
    !empty($small[rand(0, $smallLength)]);
}));

这给了我以下结果:

对于小数组:

  • array_key_exists:float(0.18357992172241)
  • : float (0.072798013687134)
  • isset: float (0.070242881774902)

对于一个相对大的数组:

  • array_key_exists:float(0.57489585876465)
  • : float (0.0068421363830566)
  • isset: float (0.0069410800933838)

因此,如果可能的话,使用 emptyisset 会更快。

关于php - array_key_exists($key, $array) 与 !empty($array[$key]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6884609/

相关文章:

php - 将 1 小时添加到时间变量

php - 匹配大括号之间的所有内容 - 正则表达式

php - 为什么 header() 函数非常慢?

PHP7 : array_key_exists() - something is wrong

php - array_key_exists 运行不正常

php - 数组键存在于多维数组中

php - Facebook 广告 API PHP : Video upload using AdVideo class

javascript - 如何从多个 svg 文件中提取数据并将其存储在 JavaScript 数组中

php - 如何在 PHP 中访问以 @ 开头的 stdClass 成员

java - 使用数组和多种方法进行编码给我带来错误并且无法找出原因