2

可能重复:
获取数组的第一个元素

在php中获取数组第一项的最快和最简单的方法是什么?我只需要将数组的第一项保存在字符串中,并且不得修改数组。

4

6 回答 6

5

我会说这是非常优化的:

echo reset($arr);
于 2012-10-08T10:39:34.777 回答
3

我不得不试试这个

$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];
于 2012-10-08T10:49:27.263 回答
1

使用reset

<?php
$array = Array(0 => "hello", "w" => "orld");
echo reset($array);
// Output: "hello"
?>

请注意,当您使用它时,数组的光标设置为数组的开头。

现场演示

(当然,您可以将结果存储到字符串中而不是echoing,但我echo用于演示目的。)

于 2012-10-08T10:39:29.503 回答
0

像这样的东西?:

$firstitem = $array[0];
于 2012-10-08T10:39:26.650 回答
0

reset做这个:

$item = reset($array);

无论键是什么,这都会起作用,但它会移动数组指针(我从来没有理由担心这一点,但应该提及)。

于 2012-10-08T10:39:47.100 回答
0

最有效的是获取引用,因此不涉及字符串复制:

$first = &$array[0];

只要确保你不修改$first,因为它也会在数组中被修改。如果您必须修改它,请寻找其他答案替代方案。

于 2012-10-08T10:41:08.530 回答