ホームページ >バックエンド開発 >PHPチュートリアル >PHP で多次元配列を効率的に転置するにはどうすればよいですか?
PHP での多次元配列の転置: 反転と一般化
多次元配列の転置は、行と列を反転し、効率的に配列を回転する操作です。 90度。この一般的なプログラミング タスクに対処するために、2 次元配列と高次元配列の両方に対してこれを実行する PHP 関数を調べてみましょう。
2 次元配列の転置
の場合質問で提供されている例のような 2 次元配列の場合、転置するのは簡単なプロセスです。次の transpose という名前の関数は、これを実現します。
function transpose($array) { array_unshift($array, null); return call_user_func_array('array_map', $array); }
この関数は、null 要素を配列の最初のインデックスとして追加し、array_map を使用して各行を反復処理し、新しい配列を作成することで機能します。
たとえば、質問で指定された $foo 配列を転置するには:
$bar = transpose($foo); var_dump($bar[2]);
これは次のようになります。目的の結果を出力します:
array(3) { ["a"]=> string(2) "a2" ["b"]=> string(2) "b2" ["c"]=> string(2) "c2" }
高次元配列への一般化
転置関数は、再帰を使用して任意の次元の配列を処理するように一般化できます。方法は次のとおりです:
function multi_transpose($array) { if (!is_array($array)) { return array($array); } $transposed = array(); foreach ($array as $key => $value) { $transposed[] = multi_transpose($value); } return call_user_func_array('array_map', $transposed); }
この関数は配列を入力として受け取り、配列の値に対してそれ自体を再帰的に呼び出します。基本的なケースは、値が配列ではなくなった場合です。この場合、値を含む 1 要素の配列が返されます。配列の場合、各値を再帰的に転置し、array_map を使用して最終的な転置配列に結合します。
multi_transpose 関数の使用は、2 次元の転置関数と似ています。
$multi_dimensional_array = ...; $transposed = multi_transpose($multi_dimensional_array);
これ関数は任意にネストされた配列を処理でき、次元を 90 度反転して配列を転置します。
以上がPHP で多次元配列を効率的に転置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。