使用 PHP 将数组写入 CSV 文件
Write array to CSV file using PHP
我正在尝试通过在写入 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
)
使用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);
在推送之前合并这些值:
代码:(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',
)
我正在尝试通过在写入 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
)
使用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);
在推送之前合并这些值:
代码:(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',
)