1 php arrays multidimensional-array
我正在努力将 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
)
Run Code Online (Sandbox Code Playgroud)
我想要的是:
[0] => Array
(
[fsn] => 1219601
[ac_type] => 748
[flt_type] => SS
)
[1] => Array
(
[fsn] => 1206869
[ac_type] => 748
[flt_type] => SS
)
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我正在使用的内容,我正在使用 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>';
?>
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!!
移开第一个项目以获取密钥:
$keys = array_shift($array);
Run Code Online (Sandbox Code Playgroud)
然后array_combine使用键数组映射其余部分。
$result = array_map(function($values) use ($keys) {
return array_combine($keys, $values); }, $array);
Run Code Online (Sandbox Code Playgroud)
根据您编辑中显示的代码,如果您替换$rows[] = $cells;为:
if (isset($keys)) {
$rows[] = array_combine($keys, $cells);
} else {
$keys = $cells;
}
Run Code Online (Sandbox Code Playgroud)