【问题标题】:Write array to CSV file using PHP使用 PHP 将数组写入 CSV 文件
【发布时间】:2017-08-24 06:35:29
【问题描述】:

我试图通过在写入 CSV 之前先将数据存储到数组中来将数据插入 CSV 文件。但是我在将多维数组写入 CSV 文件时遇到了问题。

这是我的输入的样子:

<input type="text" name="names" placeholder="Enter Name" />
<select name="gender">
    <option value="Male">Male</option>
    <option value="Female">Female</option>
</select>
<input type="text" name="age" placeholder="Enter Age" />
<input type="text" name="state" placeholder="Enter State" />

<label>How Did You Find Us?</label>

<input type="checkbox" name="remarks[]" value="Search Engine (eg. Google)"> Search Engine (eg. Google) &nbsp;&nbsp;&nbsp;
<input type="checkbox" name="remarks[]" value="Facebook"> Facebook &nbsp;&nbsp;&nbsp;
<input type="checkbox" name="remarks[]" value="Newspaper Ads"> Newspaper Ads &nbsp;&nbsp;&nbsp;
<input type="checkbox" name="remarks[]" value="Bus-Stop Ads"> Bus-Stop Ads &nbsp;&nbsp;&nbsp;

以下代码是我如何存储输入数据并写入 CSV 文件:

$names = filter_input(INPUT_POST, "names");
$gender = filter_input(INPUT_POST, "gender");
$age = filter_input(INPUT_POST, "age");
$state = filter_input(INPUT_POST, "state");
$remarks = $_POST['remarks'];

$inputArr[] = array(
    $names, $gender, $age, $state, $remarks
);

$fp = fopen($_SERVER["DOCUMENT_ROOT"]."/student.csv", "a+");

fputcsv($fp, $inputArr);
fclose($fp);

$inputArr 输出如下,它是一个多维的:

Array
(
    [0] => Melinda
    [1] => Female
    [2] => 23
    [3] => united state
    [4] => Array
        (
            [0] => Facebook
            [1] => Newspaper Ads
            [2] => Bus-Stop Ads
        )

)

我想让数组像下面的数组,以便可以将数据插入 CSV,但我不知道如何对数组进行 foreach 以获得如下输出:

Array
(
    [0] => Melinda
    [1] => Female
    [2] => 23
    [3] => united state
    [4] => Array
    [5] => Facebook
    [6] => Newspaper Ads
    [7] => Bus-Stop Ads
)

【问题讨论】:

  • 你能添加一个带有标题的小 csv 样本吗?
  • 从您的 $inputArray 中删除 $remark,然后使用 array_merge() 添加它们:$inputArray = array_merge($inputArrray, $remarks);。这应该创建一个包含所有值的一维数组。
  • 顺便说一句,您的代码应该在当前数组中生成另一个级别,因为您使用的是 $inputArr[] = ... 而不是 $inputArr = ...
  • @MagnusEriksson 您的解决方案解决了我的问题。谢谢!您可能希望将其作为解决方案,以便我将其标记为答案。
  • 您在下面有几个符合要求的答案,您可以接受这两个中的任何一个。无需添加另一个答案,做同样的事情。 :-)

标签: php arrays csv fputcsv


【解决方案1】:

使用array_merge,我认为你在分配给inputArr时不需要[]

$inputArr = array_merge(array($names, $gender, $age, $state), $remarks);
$fp = fopen($_SERVER["DOCUMENT_ROOT"]."/student.csv", "a+");

fputcsv($fp, $inputArr);
fclose($fp);

【讨论】:

    【解决方案2】:

    在推送它们之前合并值:

    代码:(Demo)

    $names="joe";
    $gender="smith";
    $age="18";
    $state="WA";
    $remarks=array('Facebook','Newspaper Ads','Bus-Stop Ads');
    
    $inputArr=array_merge(array($names, $gender, $age, $state),$remarks);
    var_export($inputArr);
    

    输出:

    array (
      0 => 'joe',
      1 => 'smith',
      2 => '18',
      3 => 'WA',
      4 => 'Facebook',
      5 => 'Newspaper Ads',
      6 => 'Bus-Stop Ads',
    )
    

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      相关资源
      最近更新 更多