是不是要用array_key_exists函数

在PHP中判断一个数组的特定索引的值是否存在,通常会用array_key_exists()函数。但是我们可能更熟悉另一个判断变量是否存在的函数isset(),当然我们也可以用isset()来判断数组中的值是否设置。

比如:

1
2
3
4
$a = array('site'=>'blog.webfuns.net');

isset($a['site']);
//同:array_key_exists('site', $a);

两种方法都能达到同样的目的,但是通过测试发现isset()函数的效率更高。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$a = range(1,1000);
$a['tom'] = 'heng';
$begin = microtime(true);
for($i=0; $i<100000; $i++){
    array_key_exists('tom', $a);
}
$end = microtime(true);
for($i=0; $i<100000; $i++){
    isset($a['tom']);
}
$end2 = microtime(true);
echo $end - $begin;
echo '<br/>';
echo $end2 - $end;

测试结果:

0.053144931793213
0.014554023742676

可以看到isset()函数的效率要高四倍左右,这下知道以后该怎么办了吧。