ホームページ >バックエンド開発 >PHPの問題 >PHP を使用して行列を 2 次元配列に変換する方法

PHP を使用して行列を 2 次元配列に変換する方法

PHPz
PHPzオリジナル
2023-04-25 09:05:15545ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。