7

こんにちは皆さん、連想配列を csv に入れるにはどうすればよいですか? たとえば、このような配列があるとします。

Array
(
    [0] => Array
        (
            [restaurant_id] => 1227
            [new_lat] => 13.62241
            [new_long] => 123.19341
            [date_updated] => 2013-11-14 11:20:26
        )

    [1] => Array
        (
            [restaurant_id] => 1218
            [new_lat] => 14.66732
            [new_long] => 121.02618
            [date_updated] => 2013-11-14 11:22:22
        )
)

csv を生成する際の私のコードは次のとおりです。

            $restaurant_id = $post_data['company_id'];
            $new_lat_entry = $post_data['new_lat'];
            $new_long_entry = $post_data['new_long'];

            $data_add =  array(
                'restaurant_id' => $restaurant_id,
                'new_lat' => $new_lat_entry,
                'new_long' => $new_long_entry,
                'date_updated' => date('Y-m-d H:i:s')
            );

            $data = unserialize(file_get_contents('addresses.txt'));
            $data[] = $data_add;

            $serialize_data = serialize($data);
            file_put_contents("addresses.txt", $serialize_data, LOCK_EX); //write the text file

            $array = unserialize(file_get_contents('addresses.txt')); //THIS WILL GET THE ARRAY
                    echo "<pre>";
            print_r($array); //display it

            $csv = '';
            foreach($array as $row) {
                $csv .= implode(',', $row) . "\n";
            }


            //fn_print_die($csv);


            $file_input = fopen("addresses.csv","w");
            foreach($csv as $line){
                fputcsv($file_input,split(',',$line));
            }
            fclose($file_input);
4

4 に答える 4

11

これはうまくいくはずです...

 <?php

  foreach ($array as $row) {
       fputcsv($file_input, $row);
 }

 fclose($file_input);

  ?>

php.net の fputcsv マニュアルを参照してください。

于 2013-11-14T03:48:57.873 に答える
2

これをきれいにするには、

  1. 配列からすべてのキーを収集します (foreach を 2 回)
  2. 各レストランで 2 番目の配列を作成します (サブノードなし)
  3. キー配列をそれにマージし、THEN
  4. すべてのレストラン サブノードをそれらのキーにマージします。

理由は簡単です: レストランAには "[self_service] => true" があります。レストランBの CSV 行は、列がないか、さらに悪いことに、代わりに "[vegetarian_food] => false" になります。

最終的に、同じ列の下に「true」と「false」が表示され、最初は「はい、セルフサービス」を意味し、2 番目は「すみません野菜」を意味します。それらはまだ同じカウント (配列) を持っている可能性があるため、おそらく気付かないでしょう。

(私はこれをコメントとして書きますが、私の Stack Exchange の評判ではまだそれが許可されていません (現在 48、あと 2 つ、やった!)

于 2016-12-29T13:02:26.207 に答える