PHP には、array_reverse()
、rsort()
、arsort() など、配列の逆順を出力するために使用できる関数が多数あります。
などしかし、これらの関数を使用しない場合、配列の逆出力を実現するにはどうすればよいでしょうか?以下にいくつかの実装方法を紹介します。
$arr = array(1, 2, 3, 4, 5); $len = count($arr); for ($i = $len - 1; $i >= 0; $i--) { echo $arr[$i] . " "; }
for ループを通じて、配列の最後の要素から走査を開始し、インデックス $i を徐々に減らして各要素を出力します。この方法はシンプルで簡単ですが、配列の長さを手動で計算する必要があります。
$arr = array(1, 2, 3, 4, 5); while ($value = end($arr)) { echo $value . " "; prev($arr); // 向前移动指针 }
end()
関数を通じて配列の最後の要素を取得し、それを 1 つずつ出力して を渡しますprev()
関数はポインタを前の要素に移動します。ポインタが最初の要素に移動すると、end()
関数は false を返し、ループを終了します。
$arr = array(1, 2, 3, 4, 5); $reverseArr = array(); foreach ($arr as $value) { array_unshift($reverseArr, $value); } foreach ($reverseArr as $value) { echo $value . " "; }
foreach ループを通じて配列を走査し、配列要素を新しい配列の先頭に追加します (つまり、後ろから前に追加します)。最後に、新しい配列の要素が foreach ループを通じて出力されます。これは、元の配列とは逆の順序です。
$arr = array(1, 2, 3, 4, 5); $len = count($arr); $i = $len - 1; do { echo $arr[$i] . " "; $i--; } while ($i >= 0);
do-while ループを使用して、配列の最後の要素から走査を開始し、インデックス $i を徐々に減らして各要素を出力します。 for ループに似ていますが、配列の長さを手動で計算する必要はありません。ただし、do-while ループは少なくとも 1 回実行されることに注意してください。つまり、配列が空の場合はエラーが発生します。
$arr = array(1, 2, 3, 4, 5); $reverseArr = array(); while (count($arr) > 0) { $lastVal = array_splice($arr, -1); $reverseArr = array_merge($reverseArr, $lastVal); } foreach ($reverseArr as $value) { echo $value . " "; }
array_splice()
関数を使用して、配列の末尾から最後の要素を削除し、削除された要素を返しますそして、それを新しい配列とマージします。元の配列が空になるまでこのプロセスを繰り返し、最後に元の配列とは逆の順序で新しい配列を出力します。
上記は、関数を使用せずに PHP で逆順の配列出力を実装するいくつかの方法です。読者は実際のニーズに応じてさまざまな方法を選択できます。
以上がPHPで配列の逆順出力を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。