php从数组写入csv

时间:2011-07-19 19:29:13

标签: php

我环顾四周,我找到了类似的例子并给了他们一个机会,但我不能让我的工作......

这是我的......它不起作用。我做错了什么:S? POST的类型是数组,所以我想我必须将它转换为字符串以使其工作.. 名称和数字如下所示: 数组([0] => john Hartz [1] => Cindy Cinamon [2] => Fruit Cake)数组([0] => 9058553699 [1] => 4167641345 [2] => 4167641543 )

<?php
error_reporting(-1);


$list = array (
    $_POST['names'],
    $_POST['numbers']
);

$fp = fopen('numbers.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

以下作品......     

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

这是更新的版本,有点工作但不完全......

<?php
error_reporting(-1);


$name = implode(",", $_POST['names']);
$num= implode(",", $_POST['numbers']);
$list = array (
    array($name, $num)
);

$fp = fopen('numbers.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

brady,问题不是格式化....你看到你在哪里“|”名字或数字之间....我猜测显示1个单元格和另一个单元格之间的边界....我得到的是一个整个数组进入一个单元格......所以像这样......

|"john Hartz"  "Cindy Cinamon" "Fruit Cake"|

---------------------------------------

| 905855369941676413454167641543 |

2 个答案:

答案 0 :(得分:1)

我将采取疯狂猜测并假设您的文件正在编写并且您指的是格式。我认为这就是你所拥有的

"john Hartz" | "Cindy Cinamon" | "Fruit Cake"
---------------------------------------
9058553699   | 4167641345      | 4167641543

你想要这个

"john Hartz"    | 9058553699  
----------------------------
"Cindy Cinamon" | 4167641345  
----------------------------
"Fruit Cake"    | 4167641543

如果这是问题所在,请尝试以下方法:

    $_POST['names']   = array('john Hartz', 'Cindy Cinamon', 'Fruit Cake');
    $_POST['numbers'] = array(9058553699  , 4167641345  ,4167641543);

    $fp = fopen('file.csv', 'w');
    $fields = array();
    for ($i = 0; $i < count($_POST['names']); $i++) {
        $fields = array($_POST['names'][$i], $_POST['numbers'][$i]);
        fputcsv($fp, $fields);
    }

    fclose($fp);

修改

您是否尝试过删除foreach循环和$list数组并尝试此操作:

fputcsv($fp, $_POST['names']); 
fputcsv($fp, $_POST['numbers']); 

答案 1 :(得分:0)

旁注:尝试使用error_reporting(E_ALL)而不是-1。 error_reporting标志的值(etc)发生了一些变化。也许它会给你一个有用的警告