Я немного разочаровываюсь в результатах массива. В идеале я создаю модуль создания формы в своем приложении, и я работаю с двумя разными массивами, чтобы установить столбцы базы данных и столбцы excel. По сути, я использую результаты, предоставляемые массивами, для прямой записи в файл php (файл чтения Excel). Чтобы установить разницу в книгах Excel, я размещаю идентификатор «page2», «page3» и т. Д. В массиве «excel_rows».Объединение двух отдельных массивов с различным количеством элементов
//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.
проблема в поле3 находится на том же ключе, что и на странице2, и поэтому следующим полем является поле4, а не поле3, так как вы используете тот же ключ. Решение будет вставлять пустую строку на тот же ключ, что и команды страницы. –
Да, эта часть была дана. Попытка определить, есть ли все равно, чтобы избежать необходимости предоставлять пустую строку для «table_columns» при настройке/вставке. – pm284
Не лучше ли было бы создать многомерный массив? 'array (" page1 "=> array (" c1, c2 ")," page2 "=> array (" c3 "," c4 ")," page3 "=> array (" c5 "));' –