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

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

PHPz
PHPzオリジナル
2023-04-27 09:04:33817ブラウズ

PHP プログラミングでは、2 次元配列を 1 次元配列に変換する必要があることがよくあります。この状況は、データ処理とロジック処理の両方で共通です。では、2 次元配列を 1 次元配列に変換するにはどうすればよいでしょうか?この記事では、いくつかの簡単な実装方法を紹介します。

シナリオ分析

まず簡単な例を見てみましょう。例:

$data = array(
    array('id' => 1, 'name' => '张三', 'age' => 20),
    array('id' => 2, 'name' => '李四', 'age' => 22),
    array('id' => 3, 'name' => '王五', 'age' => 25)
);

この 2 次元配列を 1 次元配列に変換する必要があります。1 次元配列のキー名は、次の ID である必要があります。 2 次元配列の各要素、キー値は 2 次元配列の各要素の名前。これを達成するにはどうすればよいでしょうか?

解決策

方法 1: ループ トラバーサル メソッドを使用する

最も簡単な実装方法は、ループ トラバーサル メソッドを使用することです。具体的な実装プロセスは次のとおりです。

$result = array();
foreach ($data as $item) {
    $result[$item['id']] = $item['name'];
}

上記のコードを説明します。まず、変換された 1 次元配列を格納する $result という名前の配列を定義します。次に、foreach ループを使用して 2 次元配列 $data を走査します。$item は 2 次元配列の各要素を表します。各走査では、$item 配列の 'id' キーを 1 次元配列のキーとして使用し、$item 配列の 'name' キーを 1 次元配列のキーとして使用し、それらを保存します。 $result 配列内。

最後に、$result の内容は次のとおりです:

Array
(
    [1] => 张三
    [2] => 李四
    [3] => 王五
)

方法 2: array_map 関数と array_column 関数を使用する

これを実現するもう 1 つの方法は、PHP 組み込み関数を使用することです。関数 array_map と array_column。具体的な実装コードは次のとおりです:

$result = array_map(function($v){return [$v['id'] => $v['name']];}, $data);
$result = array_merge(...$result);

上記のコードは、2 次元配列の要素を新しい配列に処理する匿名関数を実装しています。配列のキー名は 'id' で、キー値は「名前」です。これにより、2 次元配列が複数の 1 次元配列を含む配列に変換されます。

次に、array_merge 関数を使用して、複数の 1 次元配列を 1 つの 1 次元配列にマージします。このとき、新しい 1 次元配列には、元のキー値だけでなく、冗長なインデックス値も含まれます。 php5.6 の新しい「expand 演算子 (...)」を使用して、冗長なインデックス値を削除し、必要な 1 次元配列を取得します。

最後に、$result の内容は次のとおりです:

Array
(
    [1] => 张三
    [2] => 李四
    [3] => 王五
)

方法 3: array_reduce 関数を使用します

array_reduce 関数を使用すると、2 次元の変換の必要性を実現することもできます。配列を 1 次元配列に変換します。実装コードは次のとおりです。

$result = array_reduce($data, function($carry, $item){
    $carry[$item['id']] = $item['name'];
    return $carry;
}, array());

上記のコードでは、array_reduce 関数を使用して、$data 配列の各要素を左から右に新しい単一の値に「マージ」します。初期値は空の配列です。

各反復では、$item 配列の 'id' キーを 1 次元配列のキーとして使用し、$item 配列の 'name' キーを 1 次元配列のキーとして使用します。次元配列、$carry 配列に格納されます。最終的に、$carry の内容は、必要な 1 次元配列になります。

最後に、$result の内容は次のとおりです:

Array
(
    [1] => 张三
    [2] => 李四
    [3] => 王五
)

アプリケーション シナリオ

2 次元配列を 1 次元配列に変換することは、データ処理シナリオでは一般的です。たとえば、データベースからクエリを実行する結果セットが 2 次元配列である場合、その中の特定の列だけを 1 次元配列として必要とする場合、その 2 次元配列を 2 次元配列に変換する必要があります。一次元配列。

同時に、論理処理では、データのスクリーニングと処理を容易にするために、複雑な 2 次元配列を 1 次元配列に単純化する必要がある場合があります。

概要

この記事では、2 次元配列を 1 次元配列に変換する 3 つの方法 (ループ トラバーサルの使用、array_map 関数と array_column 関数の使用、array_reduce 関数の使用) を紹介します。各方式には独自の実装方法と利点があり、さまざまなシナリオやニーズに応じて選択して使用できます。これらの方法を理解して習得すると、効率的で簡潔かつ洗練された PHP プログラムを作成するのに役立ちます。

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

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