我正在试图让PHP中的索引多维数组转换为关联数组,使用索引数组的第一个元素作为关联数组的键。我不确定我是否正确解释了这一点,请参阅下面的示例。
这是一个数组的片段,实际的一个在第二个维度中有48个元素,我只是以3为例。
[0] => Array
(
[0] => fsn
[1] => ac_type
[2] => flt_type
)
[1] => Array
(
[0] => 1219601
[1] => 748
[2] => SS
)
[2] => Array
(
[0] => 1206869
[1] => 748
[2] => SS
)
我想要的是:
[0] => Array
(
[fsn] => 1219601
[ac_type] => 748
[flt_type] => SS
)
[1] => Array
(
[fsn] => 1206869
[ac_type] => 748
[flt_type] => SS
)
到目前为止,我正在使用PHPSpreadsheet将XLS文件中的信息提取到数组中。最终目标是将数据推送到mysql数据库。
<?php
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
$worksheet = $spreadsheet->getActiveSheet();
$rows = [];
foreach ($worksheet->getRowIterator() AS $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE); // This loops through all cells,
$cells = [];
foreach ($cellIterator as $cell) {
$cells[] = $cell->getValue();
}
$rows[] = $cells;
}
echo '<pre>';
print_r ($rows);
echo '</pre>';
?>
非常感谢任何帮助!!
答案 0 :(得分:2)
关闭第一项以获取密钥:
$keys = array_shift($array);
然后使用键数组将array_combine
映射到其余部分。
$result = array_map(function($values) use ($keys) {
return array_combine($keys, $values); }, $array);
根据您的编辑中显示的代码,如果您将$rows[] = $cells;
替换为:
if (isset($keys)) {
$rows[] = array_combine($keys, $cells);
} else {
$keys = $cells;
}