如何通过PHPExcel从第一行转换为带有键的数组?

时间:2016-02-28 17:02:12

标签: php excel phpexcel xls xlsx

抱歉,找不到我需要的东西。我有xls / xlsx。然后我得到这样的smth:

array
  0 => 
    array
    0 => string 'NameFirstColumn'
    1 => string 'NameSecondColumn'
  1 => 
    array
    0 => string 'qqq'
    1 => float 30
  2 => 
    array
    0 => string 'www'
    1 => float 20

第一行是名称为值的标头。如何使PHPExcel转换为数组看起来像:

array
  0 => 
    array
    NameFirstColumn => string 'qqq'
    NameSecondColumn => float 30
  1 => 
    array
    NameFirstColumn => string 'www'
    NameSecondColumn => float 20

2 个答案:

答案 0 :(得分:8)

假设您已在$array

中拥有此数组
$headings = array_shift($array);
array_walk(
    $array,
    function (&$row) use ($headings) {
        $row = array_combine($headings, $row);
    }
);

答案 1 :(得分:0)

我的解决方案看起来像下面的代码。假设您已经从电子表格中读取了$ rows

$header = array_shift($rows); 
$data = toKeyedRows($rows, $header);

toKeyedRows函数的指定如下:

function toKeyedRows(array $rows, array $header) : array
{       
  array_walk($header,function($value,$key){ $value = $value?:$key; });

  array_walk(
      $rows,
      function(&$row)use($header)
      {
        $row = array_combine($header,$row);
      }
  );

  return $rows;
}