组合两个单独的数组,每个数组具有不同数量的元素


Combining two seperate arrays each with a different number of elements

我对我的数组结果有点沮丧。 理想情况下,我正在应用程序中创建一个表单制作器模块,并且我正在使用两个不同的数组来建立我的数据库列和 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这样的东西是解决方案——我只是无法把它放在一起。

一切都很好,模块赦免上面的数组代码。 任何这方面的帮助将不胜感激!

-问候。

目前的情况 我想说的是,每当创建新页面时,您都需要设置一个整数 +1,然后从键中减去该整数,以便获得正确的字段。

$subkey = 0;
foreach(array_keys($excel_rows) as $key){
    $fieldkey = $key - $subkey;
    $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; I'm not sure what this is supposed to do
        $subkey++;
    }
    else {
        $excel_row .= '$objTpl->getActiveSheet()->setCellValue('''.trim($excel_rows[$key]).''',$row['''.trim($table_columns[$fieldkey]).''']);<br/>'.PHP_EOL;
    }
}
print $excel_row;