Foreachループで最初の反復を取得するのに適した方法は何だろうと思います。最初のイテレーションで何か違うことをしたい。
これらの場合、条件付きが最良の選択肢ですか?
はい、オブジェクトを別の方法で移動できない場合(通常のforループ)、この場合は条件を使用します。
$first = true;
foreach ( $obj as $value )
{
if ( $first )
{
// do something
$first = false;
}
else
{
// do something
}
// do something
}
さらにエレガントに:
foreach($array as $index => $value) {
if ($index == 0) {
echo $array[$index];
}
}
この例は、PHPの組み込み配列機能/関数を追加するか、キーを適切な数値順に手動で指定する場合にのみ機能します。
ここに記載されている他のアプローチとは異なり、任意のPHP配列の自然な順序で動作するはずです。
$first = array_shift($array);
//do stuff with $first
foreach($array as $elem) {
//do stuff with rest of array elements
}
array_unshift($array, $first); //return first element to top
次のように、単純にカウンターを開始に追加できます。
$i = 0;
foreach($arr as $a){
if($i == 0) {
//do ze business
}
//the rest
$i++;
}
この投稿をもたらした検索結果セットの ブログ投稿 でこの解決策を見ましたが、かなりエレガントだと思いました。おそらく処理に少し重いですが。
foreach ($array as $element)
{
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
投稿には、配列の値が一意の場合にのみ機能するという警告もあります。最後の要素が「world」で、途中のランダムな要素も「world」の場合、最後の要素は2回実行されます。
first = true
foreach(...)
if first
do stuff
first = false
hm
<?php
$i = 0;
foreach($ar as $sth) {
if($i++ == 0) {
// do something
}
// do something else
}
よりエレガント。
これも機能します
foreach($array as $element) {
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
foreach($array as $element) {
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}