作为未受过教育的PHP人,我开始迷惑自己,因为我试图创建&保存由在线表单提交的数据制作的CSV文件。
我遇到了大量麻烦,试图在将数据发布到PHP代码/页面后从输入中“提取”数据
对于这个问题的目的,让我说我总共有15个输入,分为5行和3列。
我收到一些建议,使用var_dump()来创建输入数组。这很好用。我还被告知在var_dump()之后,我应该构建2个嵌套的foreach()循环,这就是我迷惑了。
假设表格如下:
var_dump()产生的数组是这样的:
array(5) {
[1]=> array(3) {
["A"]=> string(0) "" ["B"]=> string(0) "" ["C"]=> string(0) ""
}
[2]=> array(3) {
["A"]=> string(0) "" ["B"]=> string(0) "" ["C"]=> string(0) ""
}
[3]=> array(3) {
["A"]=> string(0) "" ["B"]=> string(0) "" ["C"]=> string(0) ""
}
[4]=> array(3)
{
["A"]=> string(0) "" ["B"]=> string(0) "" ["C"]=> string(0) ""
}
[5]=> array(3) {
["A"]=> string(0) "" ["B"]=> string(0) "" ["C"]=> string(0) ""
}
}
显然,填充时strlen()不会为0。 [1]
等是行,["A"]
等就是列。
现在跳过,最后的游戏是创建一个看似如下的CSV结构:
Header One,Header Two,Header Three,
row1-column1,row1-column2,row1-column3,
row2-column1,row2-column2,row2-column3,
row3-column1,row3-column2,row3-column3,
row4-column1,row4-column2,row4-column3,
row5-column1,row5-column2,row5-column3,
我认为我可以弄清楚如何将回显的输出保存到CSV文件中,但我要问的是如何从数组中提取输入(假设strlen()是> 0)?
我再次收到了一些关于使用两个嵌套的foreach循环的提示。
我必须完全厚实,但我无法得到任何foreach变化来回应任何东西。
使用以下建议的代码:
var_dump($_POST['Input_row']);
foreach ($Rows as $Columns) {
foreach ($Columns as $column){
echo $column.',';
}
echo "\r\n";
}
答案 0 :(得分:0)
访问您放置两个循环的各个值
foreach ($Rows as $Columns) {
foreach ($Columns as $column){
echo $column.',';
}
echo "\r\n";
}
如果你想要一个csv,你可以这样:
$fp = fopen('file.csv', 'w');
foreach ($Rows as $Columns) {
fputcsv($fp, $Columns);
}
fclose($fp);
答案 1 :(得分:0)
$file=fopen(<DIRECTORY_PATH>."file.csv","w");
if(!$file){
//error
}
$csv_data="";
$i=0;
foreach($x as $row){
$i++;
foreach($row as $element){
$csv_data.="row-".$i."-".$element.", ";
}
//remove the last comma
$csv_data.="\n";
}
fwrite($file,$csv_data);
$query="load data infile '".<DIRECTORY_PATH>."file.csv"."' into table your_table";
if(!mysqli->query($query))
printf("Error: %s\n", $mysqli->error);