有趣的是,foreach循环实际上是最有效的方法。
由于OP专门询问了效率,因此应该指出的是,目前所有的答案实际上都比foreach低得多。
我使用php 5.4对此进行了基准测试,并且重置/键指针方法(接受的答案)似乎比foreach慢约7倍。操纵整个阵列(array_keys,array_flip)其他方法显然比这还要慢,成为很多有大阵工作时更糟糕。
Foreach效率不高,随意使用!
编辑2015-03-03:
已经请求了基准脚本,我没有原始脚本,而是进行了一些新的测试。这次我发现foreach的速度只有reset / key的两倍。我使用了一个100键的数组并运行了每个方法一百万次以获得一些显着的差异,这里是简单基准测试的代码:$array = [];for($i=0; $i
$array["key$i"] = $i;for($i=0, $start = microtime(true); $i
foreach ($array as $firstKey => $firstValue) {
break;
}}echo "foreach to get first key and value: " . (microtime(true) - $start) . " seconds
";for($i=0, $start = microtime(true); $i
$firstValue = reset($array);
$firstKey = key($array);}echo "reset+key to get first key and value: " . (microtime(true) - $start) . " seconds
";for($i=0, $start = microtime(true); $i
reset($array);
$firstKey = key($array);}echo "reset+key to get first key: " . (microtime(true) - $start) . " seconds
";for($i=0, $start = microtime(true); $i
$firstKey = array_keys($array)[0];}echo "array_keys to get first key: " . (microtime(true) - $start) . " seconds
";
在我的PHP 5.5上输出:foreach to get first key and value: 0.15501809120178 seconds
reset+key to get first key and value: 0.29375791549683 seconds
reset+key to get first key: 0.26421809196472 seconds
array_keys to get first key: 10.059751987457 seconds