我有一个值列表,我必须检查我的输入是否存在。
最快的方法是什么?
这真的是出于对内部工作原理的好奇心,而不是任何关于过早优化的东西......
1
$x=array('v'=>'','c'=>'','w'=>);
..
..
array_key_exists($input,$x);
2
$x=array('v','c','w');
..
..
in_array($input,$x);
答案 0 :(得分:2)
isset($x[$input])
如果适合您的需要,通常会胜过两者。
在问题中的两种方法中,array_key_exists
比in_array
做的工作要少,所以如果你只需要在那两种方法之间做出选择,那么array_key_exists
就是它。
旁白:您对“内部”有任何具体问题吗?
答案 1 :(得分:0)
根据我的经验,array_key_exists在99%的时间内更快,特别是在数组大小增加时。
话虽如此,isset更快,因为它执行哈希查找与数组值搜索,但isset将在空值上返回false,如示例数组中所示。