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

时间:2014-12-27 20:56:50

标签: php arrays

我对我的阵列结果感到有点沮丧。理想情况下,我在我的应用程序中创建一个表单制作模块,我正在使用两个不同的数组来建立我的数据库列和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['']);

有人可以看到,我错过了&#39; field3&#39;从我的结果和&#39; cs&#39;产生并排空行而不是&#34; field5&#34;。

我假设像array_compare或array_combine这样的解决方案 - 我只是无法把它放在一起。

使用模块赦免上面的数组代码,一切都很可爱。任何对此的帮助都将深表感谢!

-Regards。

1 个答案:

答案 0 :(得分:1)

目前我怎么说你需要在创建一个新页面时设置一个整数+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;