Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组到CSV_Php_Arrays_Csv - Fatal编程技术网

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);