PHP では、行列は行と列で構成される長方形のグリッド データ構造です。実際のアプリケーションでは、処理のために行列を 2 次元配列に変換することが必要になることがよくあります。この記事では、PHPを使って行列を2次元配列に変換する方法を紹介します。
まず、単純な行列の例を見てみましょう:
$matrix = array( array(1, 2, 3), array(4, 5, 6), array(7, 8, 9) );
上の行列は 3 行 3 列で構成され、各要素は整数に対応します。これを 2 次元配列に変換します。つまり、次のように行列の各要素を新しい Array に追加します。
$array = array(); foreach ($matrix as $row) { foreach ($row as $cell) { $array[] = $cell; } }
この時点で得られる 2 次元配列は次のとおりです。 [1 , 2, 3, 4, 5, 6, 7, 8, 9]
、各要素は行優先で順番に配列に追加されます。
ただし、この方法の複雑さは O(n²) であり、大きな行列データを処理する場合は効率が低くなります。以下では、行列を O(n) の複雑さで 2 次元配列に変換できる配列ポインターに基づくメソッドを紹介します。
まず、reset()
関数を使用して、ポインタを行列の最初の要素に配置する必要があります。
reset($matrix);
次に、current()
関数を使用して現在のポインターが指す要素を取得し、それを新しい配列に追加して、next( )
関数はポインタを次の要素に移動します。
$array = array(); while ($row = current($matrix)) { while ($cell = current($row)) { $array[] = $cell; next($row); } next($matrix); reset($row); }
この時点で得られる結果は以前と同じですが、ループの入れ子を使用しないため、特に大規模な行列データを処理する場合に効率が高くなります。
最後に、参考のために完全なサンプル コードを提供します。
$matrix = array( array(1, 2, 3), array(4, 5, 6), array(7, 8, 9) ); reset($matrix); $array = array(); while ($row = current($matrix)) { while ($cell = current($row)) { $array[] = $cell; next($row); } next($matrix); reset($row); } print_r($array);
上記は、PHP 行列を 2 次元配列に変換する 2 つの方法であり、行列データを扱う読者の役に立つと思います。
以上がPHP を使用して行列を 2 次元配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。