使用第一个元素作为键

时间:2018-05-10 18:02:05

标签: 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
    )

我想要的是:

[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>';
?>

非常感谢任何帮助!!

1 个答案:

答案 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;
}