配列

配列

複数の配列を1つに統合

  • このエントリーをはてなブックマークに追加

array_merge関数を使って、複数のバラバラになった配列を1つに統合することができます。

この記事のポイント

  • バラバラの配列を1つの配列に統合する
  • array_merge関数の基本的な使い方を知る
  • 二次元以上の配列においても統合する

目次

概要

最初に、array_merge関数について解説します。

array_merge関数のパラメータ

最低でも1つ以上の配列をパラメータに指定する必要があります。
2つ目以降は必要な数だけ指定可能です。

それでは、実際にコードの動作をみていきましょう。

複数の配列を1つに統合

別々に用意した3つの配列を、1つの配列に統合して$resultへ格納します。

コード例

// 変数の初期化
$result = null;

// 個人情報
$personalData = array(
	"name" => "Alex",
	"gender" => "men",
	"age" => 30
);

// 連絡先
$contactData = array(
	'email' => 'nickerdoodle@sample.com',
	'phone_number' => '080-xxxx-xxxx'
);

// 住所
$addressData = array(
	'zip_code' => '350-1124',
	'address' => '埼玉県 川越市 新宿町',
	'building' => '川越ヒルズ 305',
);

$result = array_merge( $personalData, $contactData, $addressData);
var_dump($result);

実行結果

出力結果 パターン1

解説

var_dump関数の出力結果を見ると、それぞれの配列の値が$resultに入っていることを確認できました。

多次元配列を統合

同じように多次元配列を統合することも可能です。

コード例

// 変数の初期化
$result = null;

// 個人情報
$personalData = array(
	"name" => "Alex",
	"gender" => "men",
	"age" => 30,
	"contact" => array(
		'email' => 'nickerdoodle@sample.com',
		'phone_number' => '080-xxxx-xxxx'
	)
);

// 自宅
$addressData = array(
	'zip_code' => '350-1124',
	'address' => '埼玉県 川越市 新宿町',
	'building' => '川越ヒルズ 305',
	'contact' => array(
		'phone_number' => '049-xxxx-xxxx',
		'fax_number' => '049-xxxx-xxxx'
	)
);

// 緊急連絡先
$emergencyContact = array(
	"contact" => array(
		'emergency' => '090-2222-xxxx',
	)
);

$result = array_merge( $personalData, $addressData, $emergencyContact);
var_dump($result);

実行結果

出力結果 パターン2

統合前の3つの配列は全て、「contact」というキーを持った配列を持っています。
その場合は一番最後の配列の値が優先されて統合が行われます。

contact」の中で「phone_number」や「emergency」などのキーが重複していなくても、最後に登場した「contact」の内容のみが引き継がれます。
そのため、もし統合前の配列が多次元配列の場合は、同じキーを持った配列を含んでいないか注意する必要があります。

予めキーが重複する可能性がある場合は、次のようなコードに修正することで内容を上書きしないようにすることが可能です。

コード例

// 変数の初期化
$result = null;

// 個人情報
$personalData = array(
	"name" => "Alex",
	"gender" => "men",
	"age" => 30,
	"contact" => array(
		'email' => 'nickerdoodle@sample.com',
		'phone_number' => '080-xxxx-xxxx'
	)
);

// 自宅
$addressData = array(
	'zip_code' => '350-1124',
	'address' => '埼玉県 川越市 新宿町',
	'building' => '川越ヒルズ 305',
	'contact' => array(
		'phone_number' => '049-xxxx-xxxx',
		'fax_number' => '049-xxxx-xxxx'
	)
);

// 緊急連絡先
$emergencyContact = array(
	"contact" => array(
		'emergency' => '090-2222-xxxx',
	)
);

// 一旦、普通に統合する
$result = array_merge( $personalData, $addressData, $emergencyContact);

// 重複する配列のみ、改めて統合する
$result['contact'] = array_merge( $personalData['contact'], $addressData['contact'], $emergencyContact['contact']);

var_dump($result);

実行結果

出力結果 パターン3

それぞれの配列の持つ値が引き継がれるようになりました。
ただし、$personalData$addressDataにあるphone_numberはキーが重複しているため、パラメータの指定順で後ろにきている$addressDataの値が引き継がれています。

array_merge関数 – php.net

  • このエントリーをはてなブックマークに追加
前のページへ 一覧ページへ一覧 次のページへ