1. ホーム
  2. php

[解決済み] 2つの配列を結合する

2022-03-04 19:44:13

質問

このような配列が2つあります。

array( 
'11' => '11',
'22' => '22',
'33' => '33',
'44' => '44'
);

array( 
'44' => '44',
'55' => '55',
'66' => '66',
'77' => '77'
);

これらの2つの配列を、重複しないように、また元のキーを維持したまま結合したいのです。例えば、出力は以下のようになります。

array( 
'11' => '11',
'22' => '22',
'33' => '33',
'44' => '44',
'55' => '55',
'66' => '66',
'77' => '77'
);

試してみましたが、元のキーが変わってしまいます。

$output = array_unique( array_merge( $array1 , $array2 ) );

何か解決策はありますか?

どのように解決するのですか?

使用するだけです。

$output = array_merge($array1, $array2);

これで解決するはずです。文字列キーを使っているため、1つのキーが複数回出現する場合(たとえば '44' の例では、1つのキーが、同じ名前の先行するキーを上書きします。あなたの場合、両方とも同じ値なので、問題ではありませんし、重複も削除されます。

更新: 今気づいたのですが、PHP は数値文字列キーを数字 (整数) として扱うので、このような挙動になるのですね。

回避策としては、キーを再作成することです。

$output = array_combine($output, $output);

更新2: いつも忘れてしまうのですが、演算子(太字、なぜならこれは 本当に ということです。:D)

$output = $array1 + $array2;

で全て見ることができます。 http://php.net/manual/en/function.array-merge.php