可能重复:
获取数组的第一个元素
在php中获取数组第一项的最快和最简单的方法是什么?我只需要将数组的第一项保存在字符串中,并且不得修改数组。
我会说这是非常优化的:
echo reset($arr);
我不得不试试这个
$max = 2000;
$array = range(1, 2000);
echo "<pre>";
$start = microtime(true);
for($i = 0; $i < $max; $i ++) {
$item = current($array);
}
echo microtime(true) - $start ,PHP_EOL;
$start = microtime(true);
for($i = 0; $i < $max; $i ++) {
$item = reset($array);
}
echo microtime(true) - $start ,PHP_EOL;
$start = microtime(true);
for($i = 0; $i < $max; $i ++) {
$item = $array[0];
}
echo microtime(true) - $start ,PHP_EOL;
$start = microtime(true);
for($i = 0; $i < $max; $i ++) {
$item = &$array[0];
}
echo microtime(true) - $start ,PHP_EOL;
$start = microtime(true);
for($i = 0; $i < $max; $i ++) {
$item = array_shift($array);
}
echo microtime(true) - $start ,PHP_EOL;
输出
0.03761100769043
0.037437915802002
0.00060200691223145 <--- 2nd Position
0.00056600570678711 <--- 1st Position
0.068138122558594
所以最快的是
$item = &$array[0];
使用reset
:
<?php
$array = Array(0 => "hello", "w" => "orld");
echo reset($array);
// Output: "hello"
?>
请注意,当您使用它时,数组的光标设置为数组的开头。
(当然,您可以将结果存储到字符串中而不是echo
ing,但我echo
用于演示目的。)
像这样的东西?:
$firstitem = $array[0];
最有效的是获取引用,因此不涉及字符串复制:
$first = &$array[0];
只要确保你不修改$first
,因为它也会在数组中被修改。如果您必须修改它,请寻找其他答案替代方案。