PHPで2次元配列を1次元配列に変換する方法

PHPz
リリース: 2023-04-27 10:42:39
オリジナル
1108 人が閲覧しました

PHP 言語では、2 次元配列は非常に一般的なデータ型であり、複数の 1 次元配列で構成され、各 1 次元配列は独自のインデックス値を持ちます。場合によっては、操作をより便利にするために 2 次元配列を 1 次元配列に変換する必要があります。

この記事では、PHP を使用して 2 次元配列を 1 次元配列に変換する方法を説明し、参考用のサンプル コードをいくつか提供します。

まず、2 次元配列とは何か、そしてなぜそれを 1 次元配列に変換する必要があるのか​​を見ていきます。

2 次元配列とは何ですか?

簡単に言えば、PHP の 2 次元配列は配列であり、この配列の要素は 1 次元配列です。オブジェクト指向プログラミングでは、2 次元配列は配列の配列とも呼ばれます。

2 次元配列は複数の 1 次元配列で構成され、各 1 次元配列は独自のインデックス値を持ちます。一般に、2 次元配列のインデックス値は数値または文字列にすることができますが、2 次元配列の 1 次元インデックス値は数値である必要があり、そうでない場合はエラーが発生します。

なぜ 2 次元配列を 1 次元配列に変換する必要があるのでしょうか?

データを処理する場合、通常は 2 次元配列を 1 次元配列に変換する必要があります。これにより、データの操作が容易になります。生徒の得点を保存する 2D 配列があるとします。すべての生徒の合計スコアを取得したい場合や、特定の生徒の結果のみをクエリしたい場合などがあります。このような場合、配列を 1 次元配列に変換すると、必要なデータを見つけやすくなります。

方法 1: foreach ループを使用する

最も簡単な方法は、foreach ループを使用して配列を走査し、すべての要素を新しい 1 次元配列に追加することです。

サンプル コード:

// 假设我们有一个二维数组
$two_dimensional_array = array(
    array('id' => 1, 'name' => 'Tom', 'age' => 20),
    array('id' => 2, 'name' => 'Kate', 'age' => 25),
    array('id' => 3, 'name' => 'Bob', 'age' => 30),
);

// 创建一个新的一维数组
$one_dimensional_array = array();

// 循环遍历二维数组
foreach($two_dimensional_array as $key => $value) {
    // 循环遍历一维数组,将值添加到新的一维数组中
    foreach($value as $k => $v) {
        $one_dimensional_array[] = $v;
    }
}

// 打印一维数组
print_r($one_dimensional_array);
ログイン後にコピー

出力:

Array
(

[0] => 1
[1] => Tom
[2] => 20
[3] => 2
[4] => Kate
[5] => 25
[6] => 3
[7] => Bob
[8] => 30
ログイン後にコピー

)

方法 2: array_reduce 関数を使用する

PHP の array_reduce 関数は、関数を使用して配列を単一の値に繰り返し結合できます。この関数の最初のパラメータは配列で、2 番目のパラメータはコールバック関数です。

コールバック関数には、アキュムレータと現在値という 2 つのパラメータが必要です。アキュムレータと現在の値を加算し、結果を返します。 array_reduce 関数の戻り値は、最終的なアキュムレータ値です。

この例では、array_merge 関数を使用して、すべての値を配列にマージしました。

サンプルコード:

// 假设我们有一个二维数组
$two_dimensional_array = array(
    array('id' => 1, 'name' => 'Tom', 'age' => 20),
    array('id' => 2, 'name' => 'Kate', 'age' => 25),
    array('id' => 3, 'name' => 'Bob', 'age' => 30),
);

// 使用array_reduce函数将二维数组转换为一维数组
$one_dimensional_array = array_reduce($two_dimensional_array, 'array_merge', array());

// 打印一维数组
print_r($one_dimensional_array);
ログイン後にコピー

出力:

Array
(

[id] => 3
[name] => Bob
[age] => 30
ログイン後にコピー

)

ご覧のとおり、array_reduce 関数最後の配列のデータのみが返されます。

方法 3: array_column 関数を使用する

2 次元配列を 1 次元配列に変換するもう 1 つの方法は、array_column 関数を使用することです。この関数は、指定されたキーによって指定された配列列を返します。

サンプルコード:

// 假设我们有一个二维数组
$two_dimensional_array = array(
    array('id' => 1, 'name' => 'Tom', 'age' => 20),
    array('id' => 2, 'name' => 'Kate', 'age' => 25),
    array('id' => 3, 'name' => 'Bob', 'age' => 30),
);

// 使用array_column函数将二维数组转换为一维数组
$one_dimensional_array = array_column($two_dimensional_array, 'name');

// 打印一维数组
print_r($one_dimensional_array);
ログイン後にコピー

出力:

Array
(

[0] => Tom
[1] => Kate
[2] => Bob
ログイン後にコピー

)

次のようにして別のキーを指定できます。異なる配列列を返します。

概要:

PHP では、2 次元配列を 1 次元配列に変換する方法がたくさんあります。 foreach ループを使用して配列を反復処理するのが最も一般的な方法です。 array_reduce 関数または array_column 関数を使用して変換を行うこともできます。

変換された 1 次元配列は、より簡単に操作およびクエリできるようになります。 2 次元配列を 1 次元配列に変換することは、PHP で複雑な多次元配列を処理する必要がある場合に非常に便利な手法です。

以上がPHPで2次元配列を1次元配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート