创建一个多维数组 - 有比这更好的方法

时间:2012-03-09 10:54:16

标签: php

我有这段代码

        foreach ($objWorksheet->getRowIterator() as $row) {

            $output[] = array();

            //adding a blank array to the end doesn't seem to 
            //advance the array pointer so do it manually.
            $test = end($output); 

            $cellIterator = $row->getCellIterator();
            foreach ($cellIterator as $cell) {
                //specifically this bit
                $output[key($output)][] = $cell->getValue();
            }
        }

但我不喜欢我如何使用

找到当前密钥
$output[key($output)][] = $cell->getValue();

有更好的方法吗?

5 个答案:

答案 0 :(得分:6)

为什么不使用其他变量?

foreach ($objWorksheet->getRowIterator() as $row) {
    $cells = array();
    foreach ($row->getCellIterator() as $cell) {
        $cells[] = $cell->getValue();
    }
    $output[] = $cells;
}

答案 1 :(得分:3)

  

在末尾添加一个空白数组似乎没有推进数组指针,所以手动执行

这是正确的,但是数组指针位置应该与你在这里做的事情无关。

您应该自己构建新的子数组,然后将完成的数组追加到最后的$output

foreach ($objWorksheet->getRowIterator() as $row) {

  $temp = array();

  foreach ($row->getCellIterator() as $cell) {
    $temp[] = $cell->getValue();
  }

  $output[] = $temp;

}

答案 2 :(得分:0)

创建一个新数组,用数据填充此数组,并在循环结束时将新创建的数组添加到$ output。

答案 3 :(得分:0)

您可以尝试这样的事情:

foreach ($objWorksheet->getRowIterator() as $i => $row) {

    $output[$i] = array();

    foreach ($row->getCellIterator() as $cell) {
        $output[$i][] = $cell->getValue();
    }
}

答案 4 :(得分:0)

foreach ($objWorksheet->getRowIterator() as $row) {
    $cells = array();
    foreach ($row->getCellIterator() as $cell) {
        array_push($cells, $cell->getValue());
    }
    array_push($output, $cells);
}