转换数组的最佳方法是:
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;
}
欢迎更好的解决方案。
答案 0 :(得分:1)
PHP有一个内置函数,可以完成这个:array_chunk()
:
将数组块化为具有大小元素的数组。最后一个块可能包含少于大小的元素。
用法:
$arr = array(1,2,3,4,5,6,7,8,9,10);
$result = array_chunk($arr, 3);
答案 1 :(得分: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 );