Php 基于行计数的透视数组

Php 基于行计数的透视数组,php,arrays,Php,Arrays,我有以下资料: $array = array(1,2,3,4,5,6); function pivotArray($array, $nbrRows) { $countTotal = count($array); $countCols = $countTotal / $nbrRows; $chunk = array_chunk($array,$countCols); $out = array(); for ($row=0;$row<$nbrRows;$row++)

我有以下资料:

$array = array(1,2,3,4,5,6);
function pivotArray($array, $nbrRows)
{
  $countTotal = count($array);
  $countCols = $countTotal / $nbrRows;

  $chunk = array_chunk($array,$countCols);

  $out = array();
  for ($row=0;$row<$nbrRows;$row++) {
    for ($col=0;$col<$countCols;$col++) {
    $out[$col][$row] = $chunk[$row][$col];
    }
  }

  $arraySingle = call_user_func_array('array_merge', $out);

  return $arraySingle;    
}
我需要“旋转”它以获得:

Array ( [0] => 1 [1] => 4 [2] => 2 [3] => 5 [4] => 3 [5] => 6 )
我所说的“pivot”是指,让我们假设数组存储为一个2x3矩阵(2行3列)。我的目标是将其旋转,使矩阵现在成为一个3x2矩阵(3行,2列)

对于这一点,我当然需要一个额外的参数,让我们说“行数”(在本例中,这类似于2行)

我做了以下工作:

$array = array(1,2,3,4,5,6);
function pivotArray($array, $nbrRows)
{
  $countTotal = count($array);
  $countCols = $countTotal / $nbrRows;

  $chunk = array_chunk($array,$countCols);

  $out = array();
  for ($row=0;$row<$nbrRows;$row++) {
    for ($col=0;$col<$countCols;$col++) {
    $out[$col][$row] = $chunk[$row][$col];
    }
  }

  $arraySingle = call_user_func_array('array_merge', $out);

  return $arraySingle;    
}
函数数据透视数组($array,$nBROWS)
{
$countTotal=count($array);
$countCols=$countTotal/$nbrows;
$chunk=array\u chunk($array,$countCols);
$out=array();

对于($row=0;$row而不是多次重新执行数组,这段代码构建了一个中间数组,并基于
$position%$countCols
展开元素。我还引入了
ceil()
来计算列数,以防奇数个元素

function pivotArray($array, $nbrRows)
{
    $countTotal = count($array);
    $countCols = ceil($countTotal / $nbrRows);
    $arraySingle = [];
    foreach ( $array as $position => $value )   {
        $arraySingle[$position % $countCols][] = $value;
    }

    return array_merge(...$arraySingle);
}

“pivot”的确切含义是什么?不清楚从输入到输出的算法是什么。让我们知道@Nick说了什么。很抱歉,这确实不清楚。我编辑了(请务必告诉他支持的版本<代码>…
)非常感谢!在这种情况下(请参阅我的编辑)$countTotal必然是偶数(nx m“矩阵”).至于版本,5.6.39,所以都很好。