array_chunk

array_chunk関数:配列を一定の要素数で分割する

使い方

$chunked = array_chunk( $vars, $size, true );

先日は文字列の分割(chunk_spit関数)をご紹介しましたが、今度は配列の分割を行う関数です。
配列の分割まで関数が用意されているなんてPHPはちょっとやり過ぎなんじゃないかと思いましたが、意外と使えるんですよね。この関数。

使い方は、第1引数に分割したい配列、第2引数に分割するサイズ、第3引数には配列のキーを保持するかどうかを論理値で指定することができます。
戻り値には引数で指定した配列が一定のサイズごとにさらに配列になった配列(自分でも説明が下手だと認識しております・・・)が返ります。
わかりにくいので例を示しましょう。

元の配列

Array
(
    [65] => A
    [66] => B
    [67] => C
    [68] => D
    [69] => E
    [70] => F
    [71] => G
    [72] => H
    [73] => I
    [74] => J
    [75] => K
    [76] => L
    [77] => M
    [78] => N
    [79] => O
    [80] => P
    [81] => Q
    [82] => R
    [83] => S
    [84] => T
    [85] => U
    [86] => V
    [87] => W
    [88] => X
    [89] => Y
    [90] => Z
)

5個ずつ分割した配列[array_chunk($var, 5, true)の戻り値]

Array
(
    [0] => Array
        (
            [65] => A
            [66] => B
            [67] => C
            [68] => D
            [69] => E
        )

    [1] => Array
        (
            [70] => F
            [71] => G
            [72] => H
            [73] => I
            [74] => J
        )

    [2] => Array
        (
            [75] => K
            [76] => L
            [77] => M
            [78] => N
            [79] => O
        )

    [3] => Array
        (
            [80] => P
            [81] => Q
            [82] => R
            [83] => S
            [84] => T
        )

    [4] => Array
        (
            [85] => U
            [86] => V
            [87] => W
            [88] => X
            [89] => Y
        )

    [5] => Array
        (
            [90] => Z
        )

)

これは是非やってみていただきたい。簡単ですから。

使いどころ

さて、ではこの関数がどこでどう役に立つのか。
私が使ったことあるところでご紹介しましょう。
例えば、配列の要素をテーブルに表示するときに縦や横に一定数で並べて表示したい場合があるでしょう。カレンダーのような表示をイメージしてもらえばわかりやすいかもしれません。
そんなときにはこれを使えば良いのです。
配列を一定数で分割してくれるので、表示もさほど難しくありません。
自分で計算すると割と単純なミスしてしまってこのように失敗してしまうかもしれません。(経験談)

公式サイト

http://jp1.php.net/manual/ja/function.array-chunk.php