如何使用PHP在csv中放置关联数组?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用PHP在csv中放置关联数组?相关的知识,希望对你有一定的参考价值。
大家好,我想问一下如何在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) . "
";
}
//fn_print_die($csv);
$file_input = fopen("addresses.csv","w");
foreach($csv as $line){
fputcsv($file_input,split(',',$line));
}
fclose($file_input);
答案
这应该工作......
<?php
foreach ($array as $row) {
fputcsv($file_input, $row);
}
fclose($file_input);
?>
请参阅php.net上的fputcsv手册
另一答案
您应尽可能尝试实施SPL classes:
$csv_file = new SplFileObject('addresses.csv', 'w');
foreach ($address_list as $address_fields) {
$csv_file->fputcsv($address_fields);
}
另一答案
你可以使用implode很容易地做这样的事情
$csv = '';
foreach($array as $row) {
$csv .= implode(',', $row) . "
";
}
另一答案
要做到这一点,你必须这样做
- 收集数组中的所有键(foreach两次)
- 为每个餐厅建立第二个数组(没有子节点)
- 将keys数组合并到那个然后
- 将所有餐厅子节点合并到这些键。
原因很简单:餐厅A有“[self_service] => true”餐厅B的CSV行要么错过一个列,要么更糟糕,而是“[vegetarian_food] => false”。
最后,你会在彼此相同的列中有“真”和“假”,其中theo首先表示“是,自助服务”,第二个意思是“抱歉蔬菜”。您可能永远不会注意到,因为它们可能仍然具有相同的计数(数组)。
(我会把它写成评论,但我的Stack Exchange声誉还不允许我(现在48,还有2个去,是的!)
以上是关于如何使用PHP在csv中放置关联数组?的主要内容,如果未能解决你的问题,请参考以下文章