我有这段代码
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();
有更好的方法吗?
答案 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);
}