我有一个excel文件,其数据是一个3d数组。
我正在使用PHPExcel Object将数据返回到3d数组中。但我只能返回一个二维数组。
$objPHPExcel = PHPExcel_IOFactory::load($file);
$cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
foreach ($cell_collection as $cell) {
$column = $objPHPExcel->getActiveSheet()
->getCell($cell)
->getColumn();
$row = $objPHPExcel->getActiveSheet()
->getCell($cell)
->getRow();
$data_value = $objPHPExcel->getActiveSheet()
->getCell($cell)
->getValue();
if ($row == 1) {
$header[$row][$column] = $data_value;
} else {
$arr_data[$row][$column] = $data_value;
}
}
如何返回如下结果数组:
$res = array(
[2]=>array(
[A] => A,//column A
[B] =>array([1]=>'red',[2]=>'pink',[3]=>'purple')
),
[3]=>array(
[A] => B,//column B
[B] =>array([1]=>'white',[2]=>'blue',[3]=>'black')
),
);
任何人都知道如何修改我的代码以返回预期的结果?任何答案都将不胜感激!
答案 0 :(得分:1)
我不是一个php程序员,这个代码没有编译。在这里,我添加了我的代码来生成您期望的数组。它可以帮助您解决问题。我认为$ column是一个像A,B ......这样的列值。
$i = 1;
$i_str = "";
$res = array();
foreach ($cell_collection as $cell) {
$column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
$row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
$data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();
if ($row == 1) {
$header[$row][$column] = $data_value;
} else {
if($column == 'A' && $data_value != ""){
$i++;
$i_str = (string) $i;
$res[$i_str]['A'] = $data_value;
$res[$i_str]['B'] = array();
}
else if($column == 'B'){
$len = (string) (count($res[$i_str]['B']) + 1);
$res[$i_str]['B'][$len] = $data_value;
}
}
}
print_r($res) // here you will get your expected array