1. 程式人生 > >php判斷陣列元素是否存在效能比較

php判斷陣列元素是否存在效能比較

實現功能:判斷長度為 1000w 的陣列中是否存在 1-1000w 的元素標識

php版本:7.2.1

判斷方式:

  • isset( )
  • array_key_exists( )
  • in_array( )

程式碼:

<?php
ini_set('memory_limit', '2048M');

$j       = 10000000;
$arr_key = $arr_value = [];
for ($i = 1; $i <= $j; $i++) {
    $arr_key[$i] = 1;
    $arr_value[] = $i;
}

$t = microtime(true);
for ($i = 1; $i <= $j; $i++) {
    if (isset($arr_key[$i])) {
        continue;
    }
}
$t = microtime(true) - $t;
echo "isset: {$t}\n";

$t = microtime(true);
for ($i = 1; $i <= $j; $i++) {
    if (array_key_exists($i, $arr_key)) {
        continue;
    }
}
$t = microtime(true) - $t;
echo "array_key_exists: {$t}\n";

$t = microtime(true);
for ($i = 1; $i <= $j; $i++) {
    if (in_array($i, $arr_value)) {
        continue;
    }
}
$t = microtime(true) - $t;
echo "in_array: {$t}\n";

結果:

in_array( ) 方式在 30 分鐘之後還未打印出結果

總結:

對陣列進行單位是否存在判斷時,效能排序:

isset( ) > array_key_exists( ) > in_array( )