1

我已经看了一下这个问题,但我似乎无法让代码为我的目的工作。

我有一个像这样结构的数组($array),里面充满了来自数据库的数据:

array(369) {
    array(3) {
        ["id"] => string(5) "12345",
        ["title"] => string(11) "Hello World",
        ["description"] => string(n) "..."
    }
    array(3) {
        ["id"] => string(5) "12346",
        ["title"] => string(13) "Goodbye World",
        ["description"] => string(n) "..."
    }
    ...
}

但是,这个数组数据将创建一个 CSV,我还需要插入空列。因此我需要数组最终看起来像这样:

array(369) {
    array(5) {
        ["id"] => string(5) "12345",
        ["title"] => string(11) "Hello World",
        ["title2"] => string(0) "",
        ["description"] => string(n) "...",
        ["description2"] => string(0) ""
    }
    array(5) {
        ["id"] => string(5) "12346",
        ["title"] => string(13) "Goodbye World",
        ["title2"] => string(0) "",
        ["description"] => string(n) "...",
        ["description2"] => string(0) ""
    }
    ...
}

我尝试使用array_splice()在相关点输入空白值:

array_splice($array, 2, 0, "");
array_splice($array, 4, 0, "");

但这最终只是破坏了数组,后来使用的代码fputcsv()甚至不将其识别数组。如何输入这些空白值?

foreach ($array as $value) {
    fputcsv($fp, $value);
}

请注意:数组key标记为什么无关紧要。可以如上面建议的那样,空白、数字、零……重要的是我需要一个空白value

4

1 回答 1

3
$array = array_map(function (array $row) {
    static $default = [
        'id' => null,
        'title' => null,
        'title2' => null,
        'description' => null,
        'description2' => null
    ];
    return array_merge($default, $row);
}, $array);

array_merge保留第一个数组的结构(键和顺序),但替换键与第二个数组匹配的任何值。

于 2015-09-11T14:01:28.637 回答