如何在PHP中将CSV文件简单地保存到多维数组中?
简单地说,我有一个脚本,允许我从HTML表单上传CSV文件,并将其保存为PHP中的数组。虽然我要求将CSV文件保存为多维数组,但该脚本运行良好 这就是我的CSV文件的外观:如何在PHP中将CSV文件简单地保存到多维数组中?,php,arrays,csv,Php,Arrays,Csv,简单地说,我有一个脚本,允许我从HTML表单上传CSV文件,并将其保存为PHP中的数组。虽然我要求将CSV文件保存为多维数组,但该脚本运行良好 这就是我的CSV文件的外观: question1,answer1,answer2,answer3,answer4 question2,answer1,answer2,answer3,answer4 question3,answer1,answer2,answer3,answer4 uploaded[1][1],uploaded[1][2],upload
question1,answer1,answer2,answer3,answer4
question2,answer1,answer2,answer3,answer4
question3,answer1,answer2,answer3,answer4
uploaded[1][1],uploaded[1][2],uploaded[1][3],uploaded[1][4],uploaded[1][5]
uploaded[2][1],uploaded[2][2],uploaded[2][3],uploaded[2][4],uploaded[2][5]
uploaded[3][1],uploaded[3][2],uploaded[3][3],uploaded[3][4],uploaded[3][5]
这是关于元素应保存为什么的顺序:
question1,answer1,answer2,answer3,answer4
question2,answer1,answer2,answer3,answer4
question3,answer1,answer2,answer3,answer4
uploaded[1][1],uploaded[1][2],uploaded[1][3],uploaded[1][4],uploaded[1][5]
uploaded[2][1],uploaded[2][2],uploaded[2][3],uploaded[2][4],uploaded[2][5]
uploaded[3][1],uploaded[3][2],uploaded[3][3],uploaded[3][4],uploaded[3][5]
这是我的工作上传脚本
<?php
if(isset($_POST['savecsv']))
{
$csv_array = Array();
$file = fopen($_FILES['upload_file']['tmp_name'], 'r');
if($file){
while (($line = fgetcsv($file)) !== FALSE) {
//$line is an array of the csv elements
array_push($csv_array,$line);
}
fclose($file);
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input type="file" name="upload_file" />
<input type="submit" name="savecsv"/>
</form>
您需要array\u unshift
array_unshift(0, $line);
因此,您的记录使用索引1进行统计,并且在索引0处使用0。还初始化了$csv\u数组
,如下所示
$csv_array = array(array());
您目前尝试的方法不是解决此问题的好方法,我建议您更改其余代码以使用正确的数组索引。但是,您可以执行以下操作,而不是简单地将$line
按到$csv\u数组
:
完整代码:
if(isset($_POST['savecsv']))
{
$file = fopen($_FILES['upload_file']['tmp_name'], 'r');
if($file) {
while (($line = fgetcsv($file)) !== FALSE) {
$csv_array[] = array_combine(range(1, count($line)), array_values($line));
}
fclose($file);
}
}
输出:
Array
(
[0] => Array
(
[1] => question1
[2] => answer1
[3] => answer2
[4] => answer3
[5] => answer4
)
[1] => Array
(
[1] => question2
[2] => answer1
[3] => answer2
[4] => answer3
[5] => answer4
)
[2] => Array
(
[1] => question3
[2] => answer1
[3] => answer2
[4] => answer3
[5] => answer4
)
)
希望这有帮助 @DevZer0-对不起,伙计,这还不能回答我的问题。我需要一个新的循环,使我的数组成为一个多维数组,就像我指定的格式一样。由于某种原因,我看到它投了反对票。不知道为什么。我投了更高的票,因为它非常有用,谢谢。我的问题离题了,但是如何让var_转储像那样输出呢?我的正在一行打印我的整个数组。@fizzix:在
标记中输出它们,如下所示:echo'',print\r($csv\u array),''代码>