如何将平面数组转换为多维数组?

时间:2013-12-16 21:15:04

标签: php arrays multidimensional-array

转换数组的最佳方法是:

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;
}

欢迎更好的解决方案。

2 个答案:

答案 0 :(得分:1)

PHP有一个内置函数,可以完成这个:array_chunk()

  

将数组块化为具有大小元素的数组。最后一个块可能包含少于大小的元素。

用法:

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

Demo.

答案 1 :(得分:1)

使用array_slicearray_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 );