重複の可能性:
配列の最初の要素を取得する
PHPで配列の最初の項目を取得する最も速くて簡単な方法は何ですか? 文字列に保存された配列の最初の項目のみが必要であり、配列を変更してはなりません。
重複の可能性:
配列の最初の要素を取得する
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];
reset
これを行います:
$item = reset($array);
これはキーが何であるかに関係なく機能しますが、配列ポインタを移動します(これについて心配する理由はありませんでしたが、言及する必要があります)。
最も効率的なのは参照を取得することです。そのため、文字列のコピーは必要ありません。
$first = &$array[0];
$first
配列でも変更されるため、変更しないでください。変更する必要がある場合は、他の回答の選択肢を探してください。