php数组到CSV
我有一个数组php数组到CSV,php,arrays,csv,Php,Arrays,Csv,我有一个数组 $numbers= array(3) { [months]=> array(3) { ["1"]=> string(7) "Jan" ["2"]=> string(7) "Feb" ["3"]=> string(7) "Mar" } [dates]=> array(3) { ["1"]=> string(7) "12th" ["2"]=
$numbers= array(3) {
[months]=>
array(3) {
["1"]=>
string(7) "Jan"
["2"]=>
string(7) "Feb"
["3"]=>
string(7) "Mar"
}
[dates]=>
array(3) {
["1"]=>
string(7) "12th"
["2"]=>
string(7) "19th"
["3"]=>
string(7) "22nd"
}
[people]=>
array(3) {
["1"]=>
string(7) "Bill"
["2"]=>
string(7) "Ted"
["3"]=>
string(7) "Gary"
}
}
我想将这些数组的内容以表格的形式写入CSV文件
所以我得到了如下输出:
months, dates, people
Jan, 12th, Bill
Feb, 19th, Ted
Mar, 22nd, Gary
我想尝试一次将它从阵列直接放入CSV,这是可能的,但我找不到不将其切碎的方法。
可能会有所帮助,但我们不会为您编写它。就个人而言,如果数组那么小,我倾向于使用SPL乘法器来“转置”数组arrays@MarkBaker他需要首先转换数组。注意:CSV代表“逗号分隔值”。如果出于某种原因使用CSV,您可能希望用逗号分隔值,或者只使用一个简单的txt文件,因为数组是列,标准函数是按行工作的,您可能需要通过循环手动执行此操作。@MarkBaker数组并不小,此示例只是为了尝试理解我希望输出的方式看,而不是指示它实际上做什么。
$mi = new MultipleIterator();
$headers = array();
foreach($numbers as $header => $data) {
$mi->attachIterator(new ArrayIterator($data));
$headers[] = $header;
}
$fh = fopen('myfile.csv', 'w');
fputcsv($fh, $headers);
foreach($mi as $values) {
fputcsv($fh, $values);
}
fclose($fh);
<?php
// transform the array
$keys = array_keys($numbers);
array_unshift($numbers, null);
$output = call_user_func_array('array_map', $numbers);
array_unshift($output, $keys);
// from php.net
$fp = fopen('file.csv', 'w');
foreach ($output as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);