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最初の配列の構造 (キーと順序) を保持しますが、キーが 2 番目の配列と一致する値を置き換えます。

于 2015-09-11T14:01:28.637 に答える