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

我试图从这个代码读取Excel中的数据

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

var_dump返回string(4)“CCC3”

但我有一个奇怪的问题

 $row['name'] = 

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

 $row_name = 

没关系….

使用phpExcel读取数据。

当然,我可以把它换成第二种select,但我不知道,为什么它不工作

感谢帮助

$row是一个对象,所以你不能这样设置属性,除非它实现了ArrayAccess 。 你的问题让我觉得$row只是一个未使用的variables,在这种情况下,你可以unset和/或使它像一个数组像$row = array();

我也犯了同样的错误。 我只是用一些其他variables重新命名$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(); } 

它的工作就像一个魅力。

您已经在脚本的早期将$row的值设置为PHPExcel_Worksheet_Row对象,可能使用PHPExcel的行迭代器,所以$row已经作为对象存在。 这意味着当你为它赋值为$row['name']时,你不能简单地依靠PHP将它重新定义为关联数组。

要么使用另一个以前没有使用的variables名(例如$ rowdata),要么使用unset($row); 在尝试给它分配一个值之前。