PHPで配列をn分割する~array_chunk
要素が10ある配列を、例えば3コづつに分割して再格納したいといったときの方法をど忘れしてましたので覚書です。利用用途的には、メニューを縦になが~く並べるのではなく、指定数になったら右にfloatさせるなどの時に便利かと思います。
配列の要素を3分割する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $array = array ( 'MENU 1' , 'MENU 2' , 'MENU 3' , 'MENU 4' , 'MENU 5' , 'MENU 6' , 'MENU 7' , 'MENU 8' , 'MENU 9' ); $chunk = array_chunk ( $array ,3); //3コづつ分割 print_r( $chunk ); |
結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Array ( [0] => Array ( [0] => MENU 1 [1] => MENU 2 [2] => MENU 3 ) [1] => Array ( [0] => MENU 4 [1] => MENU 5 [2] => MENU 6 ) [2] => Array ( [0] => MENU 7 [1] => MENU 8 [2] => MENU 9 ) ) |
連想配列の要素を3分割する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | $array = array ( array ( 'category' => 'CATEGORY 1' , 'menu' => array ( 'MENU 1' , 'MENU 2' , 'MENU 3' ) ) , array ( 'category' => 'CATEGORY 2' , 'menu' => array ( 'MENU 1' , 'MENU 2' , 'MENU 3' , 'MENU 4' , 'MENU 5' ) ) , array ( 'category' => 'CATEGORY 3' , 'menu' => array ( 'MENU 1' , 'MENU 2' , 'MENU 3' , 'MENU 4' , 'MENU 5' , 'MENU 6' , 'MENU 7' ) ) ); $new_Array = array (); foreach ( $array AS $array ){ $new_Array [] = array ( 'category' => $array [ 'category' ] , 'menu' => array_chunk ( $array [ 'menu' ],3) //3つづつ分割 ); } print_r( $new_Array ); |
結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | Array ( [0] => Array ( [category] => CATEGORY 1 [menu] => Array ( [0] => Array ( [0] => MENU 1 [1] => MENU 2 [2] => MENU 3 ) ) ) [1] => Array ( [category] => CATEGORY 2 [menu] => Array ( [0] => Array ( [0] => MENU 1 [1] => MENU 2 [2] => MENU 3 ) [1] => Array ( [0] => MENU 4 [1] => MENU 5 ) ) ) [2] => Array ( [category] => CATEGORY 3 [menu] => Array ( [0] => Array ( [0] => MENU 1 [1] => MENU 2 [2] => MENU 3 ) [1] => Array ( [0] => MENU 4 [1] => MENU 5 [2] => MENU 6 ) [2] => Array ( [0] => MENU 7 ) ) ) ) |