使用第一个元素作为键将索引多维数组转换为关联数组

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)

任何帮助将不胜感激!!

Don*_*nic 5

移开第一个项目以获取密钥:

$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)