PHPで配列を分割する方法について書いています。
配列を分割する際にはarray_chunk関数を使うと良いです。
公式ドキュメントはこちらです: array_chunk
array_chunk関数の使い方
array_chunk
関数は、渡した配列を指定したサイズごとに分割します。
構文は以下のとおりです。
array_chunk(array $array, int $length, bool $preserve_keys = false): array
$array
: 分割する配列。$length
: 分割する数。$preserve_keys
: (オプション)true
を指定すると、元の配列のキーが保持されます。デフォルトはfalse
です。
この関数は、多次元配列を返し、各要素は元の配列の一部である配列となります。
実際につかってみたサンプルコード
実際にarray_chunk関数を使ったサンプルコードです。
指定したサイズに分割する
ひとつの配列を2つずつに分割しています。
<?php
$fruits = ['apple', 'banana', 'melon', 'orange', 'lemon'];
$chunkedFruits = array_chunk($fruits, 2);
print_r($chunkedFruits);
最初に$fruits
配列を作成して、次の行でarray_chunk
関数を使って分割しています。
第1引数に分割したい配列と、第2引数に分割するサイズを指定しています。
print_r
で表示した結果が下記になります。
ひとつの配列が指定したサイズ(2つずつ)に分割されました。
Array
(
[0] => Array
(
[0] => apple
[1] => banana
)
[1] => Array
(
[0] => melon
[1] => orange
)
[2] => Array
(
[0] => lemon
)
)
配列要素が5個だったので、ちょうど分割されず、3つ目の配列は「lemon
」の要素ひとつだけになっていますね。
このように簡単に分割することが可能です。
連想配列を分割する
次に連想配列を分割してみます。
先ほどと同じ配列に、キーを追加して分割してみました。
<?php
$fruits = [
'red' => 'apple',
'yellow' => 'banana',
'green' => 'melon',
'orange' => 'orange',
'yellow2' => 'lemon'
];
$chunkedFruits = array_chunk($fruits, 2);
print_r($chunkedFruits);
$fruits
配列にキーを追加して、array_chunk
関数で同じように2つずつに分割しています。
結果は下記のようになります。
連想配列のキーが消えて分割されることが確認できました。
Array
(
[0] => Array
(
[0] => apple
[1] => banana
)
[1] => Array
(
[0] => melon
[1] => orange
)
[2] => Array
(
[0] => lemon
)
)
キーを保持して連想配列を分割する
array_chunk
関数の第3引数にtrue
を渡すと、連想配列のキーを保持したまま分割してくれます。
$fruits = [
'red' => 'apple',
'yellow' => 'banana',
'green' => 'melon',
'orange' => 'orange',
'yellow2' => 'lemon'
];
$chunkedFruits = array_chunk($fruits, 2, true);
print_r($chunkedFruits);
先ほどと同じ配列をarray_chunk
関数で分割しています。
変えたのは、関数の第3引数にtrue
を渡しているところです。
結果を確認すると、下記のように連想配列のキーを保持したまま分割してくれました。
Array
(
[0] => Array
(
[red] => apple
[yellow] => banana
)
[1] => Array
(
[green] => melon
[orange] => orange
)
[2] => Array
(
[yellow2] => lemon
)
)
その他注意点
最後に実行するときの注意点です。
分割サイズが配列より大きい場合は、配列の中にひとつの配列が作成されます。
さきほどのコードで、サイズを10と指定すると…
$chunkedFruits = array_chunk($fruits, 10, true);
下記のように、配列の配下に単一の配列ができます。
Array
(
[0] => Array
(
[red] => apple
[yellow] => banana
[green] => melon
[orange] => orange
[yellow2] => lemon
)
)
また、分割するサイズにマイナス値や0を指定すると、下記のようにエラーになります。
PHP Fatal error: Uncaught ValueError: array_chunk(): Argument #2 ($length) must be greater than 0
おわりに
今回はPHPのarray_chunk関数を使って、配列を分割する方法を確認していきました。
記事の内容をまとめると、下記のようになります。
・array_chunk関数の引数は第1引数が配列、第2引数が分割するサイズ。
・連想配列の分割時には、配列のキーが消える。キーを保持したい場合には第3引数をtrueにする。
コメント