Почему array_key_exists
значительно медленнее, чем isset? Ведь первая просто проверяет наличие ключа в массиве, а вторая должна: проверить существование переменной, проверить возможность наличия ключа, проверить наличие ключа, проверить его на null.
<?php
$a = array('a'=>1,'b'=>2,'c'=>3,'d'=>4, 'e'=>null);
$s = microtime(true);
for($i=0; $i<=100000; $i++) {
$t= array_key_exists('a', $a); //true
$t= array_key_exists('f', $a); //false
$t= array_key_exists('e', $a); //true
}
$e = microtime(true);
echo 'array_key_exists : ', ($e-$s);
echo "\r\n";
$s = microtime(true);
for($i=0; $i<=100000; $i++) {
$t = isset($a['a']); //true
$t = isset($a['f']); //false
$t = isset($a['e']); //false
}
$e = microtime(true);
echo 'is_set : ' , ($e-$s);
Тестировал в песочнице -
sandbox.onlinephpfunctions.com/code/20269eaf965113... - итого:
array_key_exists :
0.013365030288696is_set :
0.0059390068054199