我对我的数组结果感到有点沮丧。理想情况下,我在我的应用程序中创建了一个表单制作模块,我正在使用两个不同的数组来建立我的数据库列和Excel列。实质上,我使用数组提供的结果直接写入一个php文件(Excel阅读器文件)。为了在Excel工作簿中建立差异,我在“excel_rows”数组中提出了一个标识符“page2”,“page3”等等。结合两个不同数量的元素的单独阵列
//my arrays
$table_columns = array('field1','field2','field3','field4','field5'); //fields
$excel_rows = array('c1','c2','page2','c3','c4','page3','c5'); //excel columns
从这里..我去尝试过滤数组键..
foreach(array_keys($excel_rows) as $key){
$page = array_search(strpos(trim($excel_rows[$key]),'page'),$excel_rows);
if(strpos(trim($excel_rows[$key]),'page') !== false){
$excel_row .= '$objTpl->setActiveSheetIndex('.(str_replace('page','',trim($excel_rows[$key])) -1).');<br/>'.PHP_EOL;
$table_columns[$key] = 0;
}
else {
$excel_row .= '$objTpl->getActiveSheet()->setCellValue(\''.trim($excel_rows[$key]).'\',$row[\''.trim($table_columns[$key]).'\']);<br/>'.PHP_EOL;
}
}
print $excel_row;
结果应该呼应了以下工作:
$objTpl->getActiveSheet()->setCellValue('c1', $row['field1']);
$objTpl->getActiveSheet()->setCellValue('c2', $row['field2']);
$objTpl->setActiveSheetIndex(1);<br/>
$objTpl->getActiveSheet()->setCellValue('c3', $row['field4']);
$objTpl->getActiveSheet()->setCellValue('c4', $row['field5']);
$objTpl->setActiveSheetIndex(2);
$objTpl->getActiveSheet()->setCellValue('c5', $row['']);
正如人们所看到我从结果中缺少'field3','cs'产生并排空行而不是“field5”。
我假设像array_compare或array_combine是解决方案 - 我只是不能把它放在一起。
一切工作可爱与模块赦免上面的数组代码。任何与此有关的帮助将真诚地感谢!
-Regards。
问题是field3与page2位于同一个键上,这就是为什么下一个字段是field4而不是field3,因为您使用的是同一个键。解决方案将在页面命令的同一个键上插入一个空字符串。 – 2014-12-27 21:46:23
是的..这部分是给定的。尝试确定是否存在以避免必须在设置/插入时为“table_columns”提供空字符串。 – pm284 2014-12-27 21:58:35
创建一个多维数组不是更好吗? 'array(“page1”=> array(“c1,c2”),“page2”=> array(“c3”,“c4”),“page3”=> array(“c5”));' – 2014-12-27 22:04:41