不能在php中使用对象作为数组?

时间:2011-04-04 20:38:38

标签: php arrays excel object

我试图通过此代码从excel读取数据

$row['name']     =    $objPHPExcel->getActiveSheet()->getCellByColumnAndRow(3, $l)->getCalculatedValue(); 

var_dump返回字符串(4)“CCC3”

但我有一个奇怪的问题

$row['name']     =

返回不能使用PHPExcel_Worksheet_Row类型的对象作为数组 如果我使用简单的

$row_name = 

好吧....

使用phpExcel读取数据。

当然,我可以将它改为第二种选择,但我不知道,为什么它不起作用

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

我犯了同样的错误。我刚刚通过用其他变量重命名$row来纠正错误。

这就是我所做的:

$objReader = PHPExcel_IOFactory::createReaderForFile(ABSPATH.$row['file_path']);
$objReader->setReadDataOnly(true);
$objReader->setReadFilter( new MyReadFilter() );
$objPHPExcel = $objReader->load(ABSPATH.$row['file_path']);

$objPHPExcel = PHPExcel_IOFactory::load(ABSPATH.$row['file_path']);
$objWorksheet = $objPHPExcel->getActiveSheet();

foreach ($objWorksheet->getRowIterator() as $rowsheet) {
    $cellIterator = $rowsheet->getCellIterator();
    $cellIterator->setIterateOnlyExistingCells(false); 
    foreach ($cellIterator as $cell) {
        $headarray[]= $cell->getValue();
    }
}

注意我已经改变了

foreach ($objWorksheet->getRowIterator() as $row) {
                      $cellIterator = $row->getCellIterator();
}

foreach ($objWorksheet->getRowIterator() as $rowsheet) {
                      $cellIterator = $rowsheet->getCellIterator();
}

它的工作就像一个魅力。

答案 1 :(得分:1)

$row是一个对象,因此除非它实现ArrayAccess,否则不能以这种方式设置属性。您的问题让我觉得$row在这一点上只是一个未使用的变量,在这种情况下,您可以unset和/或使其成为像$row = array();这样的数组。

答案 2 :(得分:0)

您已经在脚本中先前将$row的值设置为PHPExcel_Worksheet_Row对象,可能使用PHPExcel的行迭代器,因此$row已作为对象存在。这意味着当您为$row['name']赋值时,不能简单地依赖PHP将其重新定义为关联数组。

使用之前未使用的其他变量名称(例如$ rowdata),或者在尝试为其分配值之前使用unset($row);