この記事ではphpの配列反転の方法を紹介します。
PHP では、配列は最も一般的なデータ型の 1 つであり、複数の値を格納できます。配列を反転する操作の実装は、一般的な要件の 1 つです。以下は、php 配列反転操作を実装するためのいくつかの異なる方法を示しています。
方法 1: array_reverse() 関数
PHP には、配列を反転するための組み込み関数 array_reverse() が用意されています。この関数は、元の配列の要素が入っている新しい配列を返します。逆順の配置です。例:
$arr = array(1, 2, 3, 4, 5); $reversedArr = array_reverse($arr); print_r($reversedArr);
上記のコードを実行した出力結果は次のとおりです:
Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )
この関数は、配列のキー名を保持するかリセットするかを選択することもできます。 2 番目のパラメーターはオプションであり、そのデフォルト値は false です。これは、キー名が保持されないことを意味します。値が true の場合、キー名は保存されます。
$arr = array("one" => 1, "two" => 2, "three" => 3, "four" => 4, "five" => 5); $reversedArr = array_reverse($arr, true); print_r($reversedArr);
出力結果は次のとおりです:
Array ( [five] => 5 [four] => 4 [three] => 3 [two] => 2 [one] => 1 )
方法 2: for ループ
配列反転操作は、for ループを使用して実装することもできます。配列の先頭と末尾に 1 つずつある 2 つのポインターを使用し、ループ内で 2 つのポインターを移動し、それに応じて要素を交換できます。具体的な実装は次のとおりです:
$arr = array(1, 2, 3, 4, 5); $len = count($arr); for ($i = 0; $i < $len / 2; $i++) { $temp = $arr[$i]; $arr[$i] = $arr[$len - $i - 1]; $arr[$len - $i - 1] = $temp; } print_r($arr);
出力結果は次のとおりです:
Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )
方法 3: array_reduce() 関数を使用し、配列キー名を逆にします
array_reduce を使用することもできます。 () 関数は配列を反転します。 array_reduce() 関数は反復可能な配列を受け入れ、コールバック関数を使用して各要素の合計、フィルタリング、変換などの操作を実行できます。以下は配列反転の例です:
$arr = array(1, 2, 3, 4, 5); $reversedArr = array_reduce(array_keys($arr), function ($acc, $key) use ($arr) { $acc[$key] = $arr[count($arr) - 1 - $key]; return $acc; }, []); print_r($reversedArr);
出力結果は次のとおりです:
Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )
上記のコードは、array_keys() 関数を使用して配列のキー名を取得し、それをキー名として取得します。最初のパラメータ コールバック関数の実装で使用するために array_reduce() 関数に渡されます。次のコールバック関数は、キー名を使用して配列の逆インデックスを計算し、それによって配列を逆にします。パラメータ $acc はアキュムレータであり、その値は常に配列であり、初期値は空の配列 [] です。
array_reduce() 関数を使用して配列の反転を実現するのは、いくぶん複雑であることがわかります。ただし、この関数は他の配列演算を扱う場合に非常に役立ちます。
方法 4: array_multisort() 関数と array_column() 関数を使用する
配列反転操作を実装する最後の方法は、多次元配列を処理する PHP の機能を使用することです。まず、array_multisort() 関数を使用して、独立した奇数インデックスと偶数インデックスを配列のインデックスに従って逆順に並べ替えます。次に、array_column() 関数を使用して、配列を単一の配列に変換します。具体的な実装は次のとおりです。
$arr = array(1, 2, 3, 4, 5); $n = count($arr); for ($i = 0; $i < $n; $i++) { if ($i % 2 == 0) { $even[] = $arr[$i]; } else { $odd[] = $arr[$i]; } } array_multisort(array_reverse($odd), SORT_NUMERIC, array_reverse($even), SORT_NUMERIC); $reversedArr = array_column(array($even, $odd), 0); print_r($reversedArr);
出力結果は次のとおりです。
Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )
上記のコードは、奇数インデックスと偶数インデックスを 2 つの配列 $odd と $even にそれぞれ格納します。次に、array_multisort() 関数を使用して 2 つの配列を逆順に並べ替え、最後に array_column() 関数を使用して 2 次元配列を 1 つの配列に変換します。
概要
この記事では、PHP 配列反転操作を実装する 4 つの異なる方法について説明しました。その中で、array_reverse() 関数は最も単純で直接的な方法です。 for ループ メソッドは操作が比較的簡単ですが、array_reverse() 関数ほど効率的ではありません。 array_reduce() 関数を使用して配列反転を実装するのは比較的複雑ですが、この関数は他の配列演算を操作する場合に非常に便利です。最後に、array_multisort() 関数と array_column() 関数に基づいて、多次元配列を処理する PHP の機能を利用して配列反転操作を実装するアプローチを示します。
以上がPHPの配列反転メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。