【发布时间】: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)
<input type="checkbox" name="remarks[]" value="Facebook"> Facebook
<input type="checkbox" name="remarks[]" value="Newspaper Ads"> Newspaper Ads
<input type="checkbox" name="remarks[]" value="Bus-Stop Ads"> Bus-Stop Ads
以下代码是我如何存储输入数据并写入 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 您的解决方案解决了我的问题。谢谢!您可能希望将其作为解决方案,以便我将其标记为答案。
-
您在下面有几个符合要求的答案,您可以接受这两个中的任何一个。无需添加另一个答案,做同样的事情。 :-)