php判斷陣列元素是否存在效能比較
阿新 • • 發佈:2019-02-10
實現功能:判斷長度為 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( )