ホームページ  >  記事  >  バックエンド開発  >  PHPで配列内の同じキーを持つ値を1つに結合する方法

PHPで配列内の同じキーを持つ値を1つに結合する方法

王林
王林オリジナル
2023-05-05 20:37:061888ブラウズ

PHP プログラミングのプロセスでは、配列内の同じキーを処理する必要があることがよくあります。配列内に同じキーを持つ要素がある場合、それらを 1 つにマージするにはどうすればよいですか?以下は、この問題の解決に役立つ、PHP で配列を処理するいくつかの方法を簡単に紹介します。

1. array_merge_recursive() 関数を使用する

PHP の組み込みの array_merge_recursive() 関数を使用すると、2 つ以上の配列を 1 つの配列にマージできます。同じキーが配列の 1 つに現れる場合、異なるサブ項目は 1 つの配列にマージされ、最終結果は多次元配列になります。

サンプル コードは次のとおりです。

$arr1 = array("name"=>"张三","age"=>18,"hobbies"=>array("football","basketball"));
$arr2 = array("name"=>"李四","age"=>20,"hobbies"=>array("swimming","shopping"));

$result = array_merge_recursive($arr1,$arr2);

実行後の結果は次のとおりです。

array(
    "name"=>array("张三","李四"),
    "age"=>array(18,20),
    "hobbies"=>array(
        array("football","basketball"),
        array("swimming","shopping")
    )
)

同じ key("name","age"," であることがわかります)趣味" ) の値がマージされ、多次元配列に変換されます。

2. ループ トラバーサルの使用

array_merge_recursive() 関数の使用に加えて、ループ トラバーサルを使用して、配列内の同じキーを持つ要素を 1 つにマージすることもできます。

サンプルコードは次のとおりです。

$arr = array(
    "name"=>"张三",
    "age"=>18,
    "grade"=>"一年级",
    "major"=>"计算机科学",
    "score"=>array("英语"=>80,"数学"=>90),
    "address"=>array("province"=>"广东省","city"=>"深圳市")
);

$newArr = array();

foreach($arr as $key=>$value){
    if(array_key_exists($key,$newArr)){
        if(!is_array($newArr[$key])){
            $tmp = $newArr[$key];
            $newArr[$key] = array();
            array_push($newArr[$key],$tmp);
        }
        array_push($newArr[$key],$value);
    }else{
        $newArr[$key] = $value;
    }
}

実行後の結果は次のとおりです。

array(
    "name"=>"张三",
    "age"=>18,
    "grade"=>"一年级",
    "major"=>"计算机科学",
    "score"=>array("英语"=>80,"数学"=>90),
    "address"=>array("province"=>"广东省","city"=>"深圳市")
)

ご覧のとおり、元のコードには同じキーを持つ要素はありません。配列なので、$newArr は元の配列とは異なります。 まったく同じです。

3. array_reduce() 関数を使用する

上記の 2 つの方法に加えて、PHP に付属の array_reduce() 関数を使用して、同じキーを持つ要素をマージすることもできます。配列を 1 つにします。

サンプル コードは次のとおりです。

$arr = array(
    "name"=>"张三",
    "age"=>18,
    "grade"=>"一年级",
    "major"=>"计算机科学",
    "score"=>array("英语"=>80,"数学"=>90),
    "address"=>array("province"=>"广东省","city"=>"深圳市")
);

$newArr = array_reduce(array_keys($arr),function($result,$key) use ($arr){
    if(array_key_exists($key,$result)){
        if(!is_array($result[$key])){
            $tmp = $result[$key];
            $result[$key] = array();
            array_push($result[$key],$tmp);
        }
        array_push($result[$key],$arr[$key]);
    }else{
        $result[$key] = $arr[$key];
    }
    return $result;
},array());

print_r($newArr);

実行後の結果は、上記の方法 2 の結果と同じです。

要約すると、PHP では配列内の同じキーを持つ要素を処理する方法が多数あり、それぞれの方法に適用可能な状況があります。状況に応じて最適な対処方法を選択できます。

以上がPHPで配列内の同じキーを持つ値を1つに結合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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