获取数组第一项的最快方法是啥? [复制]

Posted

技术标签:

【中文标题】获取数组第一项的最快方法是啥? [复制]【英文标题】:What is the fastest way to get the first item of an array? [duplicate]获取数组第一项的最快方法是什么? [复制] 【发布时间】:2012-09-28 14:25:57 【问题描述】:

可能重复:Get first element of an array

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

【问题讨论】:

保存在字符串中的数组?你能举个这个数组的例子吗? @Ikke:我认为他的意思是他希望将数组的第一项保存在字符串中。数组不能保存在字符串中。 【参考方案1】:

像这样?:

$firstitem = $array[0];

【讨论】:

仅适用于数字键。 仅适用于按数字顺序排列的数字键。 没错,但他确实要求最快:P 也许是最快的失败方式【参考方案2】:

使用reset:

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

注意,当你使用这个时,数组的光标会设置在数组的开头。

Live demonstration

(当然,您可以将结果存储为字符串而不是echoing,但我使用echo 进行演示。)

【讨论】:

我不知道有这样的功能。 @Veseliq: uk.php.net/reset -- 现在你是! 您在编辑前建议begin() :) @Veseliq:什么编辑?!你产生幻觉了……! ;)【参考方案3】:

我会说这是非常优化的:

echo reset($arr);

【讨论】:

【参考方案4】:

reset 这样做:

$item = reset($array);

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

【讨论】:

【参考方案5】:

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

$first = &$array[0];

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

【讨论】:

但这不会将任何内容存储到字符串中。 @LightnessRacesinOrbit 它只存储引用,而不是内容,这就是它最有效的原因。 这也是它不回答问题的原因。【参考方案6】:

我只能试试这个

$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];

【讨论】:

但他想要的是字符串,而不是引用。 @Lightness Races in Orbit 参考仅供参考 虽然第一个元素并不总是在 [0] 之下

以上是关于获取数组第一项的最快方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 3 中获取“OrderedDict”第一项的最短方法

获取对象数据的浅拷贝的最快方法是啥?

根据前一项的ID获取数组中的下一项[关闭]

从 C++ 中的字节数组中提取非零索引的最快方法是啥

JSP ELEL表达式 获取list长度/不用循环,EL在List中直接获取第一项的内容/EL获取Map的键,Map的值

获取 GameObject 参考的最快方法是啥?