・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年9月4日に投稿されました。)
PHPで配列や連想配列を分割する方法として、array_chunk()があります。
array_chunk()とは配列の値の積を計算するで関数あり、分割した結果を返り値として返します。
配列を分割するため、分割する長さを0以下にするとエラーになりますので注意してください。
そして、array_chunk()は、連想配列や2次元配列や3次元配列のような多次元配列も分割することができます。
また、array_chunk()で配列を分割すると既存の配列で設定したキーは新しく振り分けられるようになります。
しかし、キーをキープしたまま配列を分割するかどうかを設定することもできるので、配列を分割する時はarray_chunk()を使用しましょう。
今回はPHPのarray_chunk()で配列や連想配列を複数の配列に分割する方法について紹介していきます。
array_chunk()とは
array_chunk()とは、指定した配列を指定したサイズの要素に分割する関数になります。
最後の要素はサイズに満たさなくても作成されますのでサイズよりも小さくなることがあります。
array_chunk()の書き方
array_chunk()の書き方は下記のようになります。
1 | <?php array_chunk(配列, 分割する配列の大きさ[, キーの保持]) ?> |
array_chunk()のパラメータ
array_chunk()のパラメータは下記のようになります。
- 配列(必須):
複数の配列に分割する配列を指定する - 分割する配列の大きさ(必須):
分割する配列の大きさを指定する - キーの保持(任意):
キーを保持するかしないかをtrue/falseで指定する
array_chunk()は必須なパラメータとして「配列」と「各配列の大きさ」を指定します。
また、任意のパラメータとして、「キーの保持」を指定することができます。
array_chunk()で配列を複数の配列に分割するサンプルコード
array_chunk()で配列を複数の配列に分割するサンプルコードをご紹介します。
ここでは下記の3つの場合で、array_chunk()を使用します。
- 配列の要素が各配列の大きさよりも大きい場合
- 配列の要素が各配列の大きさよりも小さい場合
- 分割する数に負の整数を指定する場合
配列の要素が分割する配列の大きさよりも大きい場合
配列の要素が分割する配列の大きさよりも大きい場合にarray_chunk()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列'; $array_char = ['ナルト', 'サスケ', 'サクラ', 'キバ', 'シノ', 'ヒナタ']; print_r($array_char); echo '⚫︎ array_chunk()使用後'; $array_char_ac = array_chunk($array_char, 3); print_r($array_char_ac); ?> |
実行結果
配列の要素が分割する配列の大きさよりも大きい場合にarray_chunk()を使用すると、配列が分割されるようになります。
そのため、配列の大きさを3つにして複数の配列に分割されています。
配列の要素が分割する配列の大きさよりも小さい場合
配列の要素が分割する配列の大きさよりも小さい場合にarray_chunk()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列'; $array_char = ['ナルト', 'サスケ', 'サクラ', 'キバ', 'シノ', 'ヒナタ']; print_r($array_char); echo '⚫︎ array_chunk()使用後'; $array_char_ac = array_chunk($array_char, 10); print_r($array_char_ac); ?> |
実行結果
配列の要素が分割する配列の大きさよりも小さい場合にarray_chunk()を使用すると、配列は分割されません。
そのため、指定した配列が1つの配列として表示されます。
分割する配列の大きさに負の整数を指定する場合
分割する配列の大きさに負の整数を指定する場合にarray_chunk()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列'; $array_char = ['ナルト', 'サスケ', 'サクラ', 'キバ', 'シノ', 'ヒナタ']; print_r($array_char); echo '⚫︎ array_chunk()使用後'; $array_char_ac = array_chunk($array_char, -2); print_r($array_char_ac); ?> |
実行結果
各配列の大きさが負の整数の場合にarray_chunk()を指定すると、分割できないことからエラーが発生します。
array_chunk()の各配列の大きさに1未満の数値を指定するとエラーになりますので注意してください。
array_chunk()でキーを保持したまま配列を複数の配列に分割する場合
array_chunk()でキーを保持したまま配列を複数の配列に分割する場合は、3つ目のパラメータであるキーの保持に「true」を指定します。
array_chunk()で配列を分割すると、キーが0から振り直されますが、trueを指定することでキーはそのままの状態で分割することができます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列'; $array_char = ['ナルト', 'サスケ', 'サクラ', 'キバ', 'シノ', 'ヒナタ']; print_r($array_char); echo '⚫︎ array_chunk()使用後'; $array_char_ac = array_chunk($array_char, 3, true); print_r($array_char_ac); ?> |
実行結果
キーの保持に「true」を指定することで、array_chunk()でキーを保持したまま配列を複数の配列に分割することができます。
そのため、「キバ」のキーが「3」で「シノ」のキーが「4」、「ヒナタ」のキーが「5」のまま分割されています。
array_chunk()の分割する配列の大きさに文字列型の数値を指定する場合
分割する配列の大きさに文字列型の数値を指定してarray_chunk()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列'; $array_char = ['ナルト', 'サスケ', 'サクラ', 'キバ', 'シノ', 'ヒナタ']; print_r($array_char); echo '⚫︎ array_chunk()使用後'; $array_char_ac = array_chunk($array_char, '3', true); print_r($array_char_ac); ?> |
実行結果
分割する配列の大きさに文字列型の数値を指定してarray_chunk()を使用しても、配列が複数の配列に分割されます。
array_chunk()の分割する配列の大きさは文字列の数値であっても正常に処理が動きます。
array_chunk()で連想配列を複数の配列に分割するサンプルコード
array_chunk()で連想配列を複数の配列に分割するサンプルコードをご紹介します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php echo '⚫︎ 対象の連想配列'; $array_char = [ 'うずまき' => 'ナルト', 'うちは' => 'サスケ', 'はるの' => 'サクラ', 'いぬづか' => 'キバ', 'あぶらめ' => 'シノ', 'ひゅうが' => 'ヒナタ']; print_r($array_char); echo '⚫︎ array_chunk()使用後-1`'; $array_char_ac = array_chunk($array_char, '2'); print_r($array_char_ac); echo '⚫︎ array_chunk()使用後-2'; $array_char_ac = array_chunk($array_char, '2', true); print_r($array_char_ac); ?> |
実行結果
array_chunk()によって、連想配列を複数の配列に分割されてます。
また、指定したキーを新しく連番に振り分けれられています。
しかし、3つ目のパラメータにtrueを設定すると、指定したキーを保持したまま分割されています。
array_chunk()で多次元配列を複数の配列に分割するサンプルコード
array_chunk()で多次元配列を複数の配列に分割するサンプルコードをご紹介します。
2次元配列の場合
2次元配列の場合にarray_chunk()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php echo '⚫︎ 対象の配列'; $array_char = [ ['ナルト', 'サスケ', 'サクラ', 'カカシ'], ['キバ', 'シノ', 'ヒナタ', 'くれない'], ['シカマル', 'チョウジ', 'いの', 'アスマ'] ]; print_r($array_char); echo '⚫︎ array_chunk()使用後-1'; $$array_char_ac1 = array_chunk($array_char, 2); print_r($array_char_ac1); echo '⚫︎ array_chunk()使用後-2'; $array_char_ac2 = array_chunk($array_char[1], 2); print_r($array_char_ac2); ?> |
実行結果
array_chunk()によって2次元配列を複数の配列に分割することができます。
また、配列の後ろにインデックスを1つ指定することで2次元配列内にある指定した1次元配列を複数の配列に分割することができます。
3次元配列の場合
3次元配列の場合にarray_chunk()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php echo '⚫︎ 対象の配列'; $array_char = [ [['ナルト', 'サスケ', 'サクラ', 'カカシ'],['キバ', 'シノ', 'ヒナタ', 'くれない']], [['シカマル', 'チョウジ', 'いの', 'アスマ'],['ネジ', 'リー', 'テンテン', 'ガイ']], ]; print_r($array_char); echo '⚫︎ array_chunk()使用後-1'; $array_char_ac1 = array_chunk($array_char, 2); print_r($array_char_ac1); echo '⚫︎ array_chunk()使用後-2'; $array_char_ac2 = array_chunk($array_char[1], 1); print_r($array_char_ac2); echo '⚫︎ array_chunk()使用後-3'; $array_char_ac3 = array_chunk($array_char[1][1], 2); print_r($array_char_ac3); ?> |
実行結果
array_chunk()によって3次元配列を複数の配列に分割することができます。
また、配列の後ろにインデックスを1つ指定することで、3次元配列内にある指定した2次元配列を複数の配列に分割することができます。
そして、インデックスを2つ指定することで、3次元配列内にある指定した1次元配列を複数の配列に分割することができます。
文字列を複数の文字列に分割する場合
文字列を複数の文字列に分割する場合は、chunk_split()を使用します。
chunk_split()とは、指定した文字列を複数の文字列に分割することができる関数になります。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text = 'Multiple shadow alter ego technique'; echo $text; echo '⚫︎ chunk_split()使用後'; $text_cs = chunk_split($text, 5); print_r($text_cs); ?> |
実行結果
chunk_split()によって、指定した文字列が5文字ずつ複数の文字列に分割されています。
もし、chunk_split()について詳しく知りたい場合は、下記の記事をご参考ください。
まとめ
⚫︎ array_chunk()とは、指定した配列を指定したサイズの要素に分割する関数である
⚫︎ array_chunk()を使用するには2つのパラメータが必須であり、最大で3つのパラメータを指定できる
・ 分割する配列(必須)
・ 各配列の大きさ(必須)
・ キーの保持(任意)
⚫︎ 配列の要素が各配列の大きさよりも大きい場合にarray_chunk()を使用すると、配列が分割される
⚫︎ 配列の要素が各配列の大きさよりも小さい場合にarray_chunk()を使用すると、配列は分割されない
⚫︎ 分割する数に負の整数を指定する場合にarray_chunk()を使用するとエラーになる
⚫︎ キーを保持したまま複数の配列に分割するにはarray_chunk()のキーの保持に「true」を指定する
⚫︎ 各配列の大きさに文字列の数値を指定してarray_chunk()を使用すると、配列の分割が行われる
(文字列でも数値であれば処理は行われる)
⚫︎ array_chunk()は連想配列や多次元配列も分割することができる
⚫︎ 文字列を複数の文字列に分割するにはchunk_split()を使用する