/ /どうやってフラット配列を多次元配列に変換するのですか? - php、配列、多次元配列

どのようにフラットな配列を多次元配列に変換するのですか? - PHP、配列、多次元配列

配列を変換するための最良の方法は何ですか:

array(1,2,3,4,5,6,7,8,9,10)

に:

  array(
array(1,2,3),
array(4,5,6),
array(7,8,9),
array(10),
);

私は次のようなことを思い付きました:

$flat = array(1,2,3,4,5,6,7,8,9,10);
$colsLimit = 3;
$offset = 0;
$multi = array();

while($sliced = array_slice($flat, $offset, $colsLimit)) {
$multi[] = $sliced;
$offset += 3;
}

より良い解決策は大歓迎です。

回答:

回答№1は1

PHPには、これを正確に行う組み込み関数があります。 array_chunk()

配列をサイズ要素を持つ配列にまとめる。最後のチャンクはサイズ要素より少ない要素を含むかもしれません。

使用法:

$arr = array(1,2,3,4,5,6,7,8,9,10);
$result = array_chunk($arr, 3);

デモ。


回答№2の場合は1

どちらも使用しない別のアプローチ array_slice また array_chunk

$flat = array( 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 );

$multi = array( ( $multiIndex = 0 ) => array( ) );

foreach( $flat as $value )
count( $multi[ $multiIndex ] ) == 3
? $multi[ ++$multiIndex ] = array( $value )
: $multi[ $multiIndex ][ ] = $value
;

var_dump( $multi );