array_chunk()
みたいに全部均等ではなく, 3個, 2個, 2個, 6個, 1個, 1個 ... みたいに分割数が可変な配列を作りたかったときに地味にハマったのでメモ
<?php $src = range(1, 15); $chunks = [3, 2, 2, 6, 1, 1]; // 分割したい個数 $offset = 0; $values = []; foreach ($chunks as $chunk) { $values[] = array_slice($src, $offset, $chunk); $offset += $chunk; }
結果
array(6) { [0]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } [1]=> array(2) { [0]=> int(4) [1]=> int(5) } [2]=> array(2) { [0]=> int(6) [1]=> int(7) } [3]=> array(6) { [0]=> int(8) [1]=> int(9) [2]=> int(10) [3]=> int(11) [4]=> int(12) [5]=> int(13) } [4]=> array(1) { [0]=> int(14) } [5]=> array(1) { [0]=> int(15) } }
ちなみにハマったとこは最初 $offset
使わずに $values[] = array_slice($src, count($values), $chunk);
みたいな書き方してて、当たり前だけど offset が1個ずつしか増えてかんくて, 「なんで!??!?!?!?!」ってなってた🥰クソバカ🥰