array_merge() / array_combine()
| 対応: | PHP 4(2000) |
|---|
複数の配列を結合したり、キーと値の配列から連想配列を合成する関数です。
構文
// 複数の配列を結合します。 array_merge(配列1, 配列2, ...); // キーの配列と値の配列から連想配列を作成します。 array_combine(キー配列, 値配列); // 配列を指定した数ずつに分割します。 array_chunk(配列, 分割数, キーを保持するか);
関数一覧
| 関数 | 概要 |
|---|---|
| array_merge($array1, $array2, ...) | 複数の配列を結合して1つの配列にします。文字列キーが重複する場合は後の値で上書きされ、数値キーは振り直されます。 |
| array_combine($keys, $values) | 一方の配列をキーに、もう一方の配列を値として連想配列を作成します。2つの配列の要素数が一致しない場合はエラーになります。 |
| array_chunk($array, $size, $preserve_keys) | 配列を指定した要素数ごとに分割し、二次元配列として返します。 |
サンプルコード
sample_array_merge.php
<?php // 2つの配列を結合します。 $front = ['HTML', 'CSS', 'JavaScript']; $back = ['PHP', 'Python', 'Ruby']; $all = array_merge($front, $back); print_r($all); // 6つの要素が1つの配列になります。 // 連想配列を結合すると、同じキーは後の値で上書きされます。 $defaults = ['org' => '呪術高専', 'grade' => '4級', 'status' => '在籍']; $custom = ['org' => '呪いの王', 'status' => '覚醒']; $result = array_merge($defaults, $custom); print_r($result); // 『org』が『呪いの王』、『status』が『覚醒』に上書きされます。 // キーと値の配列から連想配列を作成します。 $names = ['五条悟', '両面宿儺', '虎杖悠仁']; $ages = [28, 1000, 15]; $users = array_combine($names, $ages); print_r($users); // 名前をキーとした連想配列になります。 // 配列を3つずつに分割します。 $numbers = [1, 2, 3, 4, 5, 6, 7]; $chunks = array_chunk($numbers, 3); print_r($chunks); // 3つずつの二次元配列になります。
php array_merge.php
Array
(
[0] => HTML
[1] => CSS
[2] => JavaScript
[3] => PHP
[4] => Python
[5] => Ruby
)
Array
(
[org] => 呪いの王
[grade] => 4級
[status] => 覚醒
)
Array
(
[五条悟] => 28
[両面宿儺] => 1000
[虎杖悠仁] => 15
)
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
)
)
概要
『array_merge()』は最も頻繁に使用される配列結合関数です。連想配列で同じ文字列キーが存在する場合は後の配列の値で上書きされるため、デフォルト設定にユーザー設定を上書きするようなパターンで活用できます。数値キーの場合は上書きされず、すべての要素が追加されてキーが0から振り直されます。
PHP 7.4以降ではスプレッド演算子『...』を使って『[...$array1, ...$array2]』のように結合することもできます。この記法のほうが直感的で読みやすい場合があります。
『array_combine()』は2つの配列の要素数が一致している必要があり、異なる場合は『ValueError』が発生します。CSVデータの処理などで、ヘッダー行をキーにしてデータ行を値にするといった使い方ができます。
『array_chunk()』はページネーションの実装やバッチ処理でデータを一定数ずつ処理したい場合に便利です。配列のキー・値の取得については『array_keys() / array_values()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。