PHP : แยก Array เป็นชิ้นๆ ด้วย array_chunk

By -

ในเวลาเขียนโปรแกรมจริงๆแล้ว array เป็นสิ่งที่ผมชอบมันมากๆ เรื่องของเรื่องก็คือ เมื่อวานทีทำงานผม ได้ข้อมูล ที่เป็น array มาจาก xml ทีแรกผมก็ไม่ได้คิดไรมาก loop แบ่งกลุ่มมันเอง แต่นั่งๆคิดดูแ้ล้ว php มันน่าจะมีตัวนี้ให้นะ เลยเข้าไปหาที่ php.net แล้วก้อไปเจอ ไอ้ตัวนี้เข้าพอดี ถือว่าตอบโจทย์ได้พอดี … ถึงแม้จะเขียนโปรแกรมมาพอสมควร แต่ว่า ยอมรับว่าไอ้นี่ผมเพิ่งเคยใช้มันเหมือนกัน .. ถ้ารู้ก่อนหน้านี้ ผมเองก็คงไม่มานั่ง loop แบ่งกลุ่มให้มันเอง หรอก …
เข้าเรื่อง ไอ้ array_chunk ถ้าอธิบายเป็นภาษาชาวบ้านๆ ก็คือ แบ่ง array ให้มันเป็น sub Array ตามจำนวนที่เราต้องการ

รูปแบบ array array_chunk ( array $input , int $size [, bool $preserve_keys = false ] );

$input = array ที่ต้องการแยก
$size = จำนวนที่ต้องการให้แยก
$preserve_keys = รักษา key ไว้หรือไม่ true, false
เช่น ผมมี array อยู่ 1 ก้อน แล้วใน นั้นมีสมาชิก อยู่ 7 ตัว

$aData =  Array(
    "2013" => "2556",
    "2014" => "2557",
    "2015" => "2558",
    "2016" => "2559",
    "2017" => "2560",
    "2018" => "2561",
    "2019" => "2562"
   );

ผมต้องการ แบ่งarrayออกเป็นกลุ่ม โดยให้แต่ละกลุ่ม มีสมาชิก อยู่กลุ่มละ 3 ตัว ผลก็จะได้ดังนี้

$aList  = array_chunk($aData, 3); 
/*
Array
(
    [0] => Array
        (
            [0] => 2556
            [1] => 2557
            [2] => 2558
        )

    [1] => Array
        (
            [0] => 2559
            [1] => 2560
            [2] => 2561
        )

    [2] => Array
        (
            [0] => 2562
        )

)

*/

ถ้าผมต้องการ ที่จะรักษา key มันไว้ ก็เพิ่ม Parameters ตัวที่ 3 preserve_keys เข้าไป

$aList  = array_chunk($aData, 3, true); 

/*
Array
(
    [0] => Array
        (
            [2013] => 2556
            [2014] => 2557
            [2015] => 2558
        )

    [1] => Array
        (
            [2016] => 2559
            [2017] => 2560
            [2018] => 2561
        )
	[2] => Array
        (
            [2019] => 2562
        )

)
*/

จะสังเกตุเห็นว่า กลุ่มสุดท้าย สมาชิก ของตัว array ไม่จำเป็นต้อง เต็มตามจำนวนที่เราแยก เสมอไปนะครับ จากตัวอย่าง มี 7 ตัว แบ่ง กลุ่มละ 3 ได้ 3 กลุ่ม กลุ่มสุดท้าย มีสมาชิกแค่ 1 ตัว
ผมว่ามันมีประโยชน์มากเลยนะ

mitsumasa