Php 为变量指定CSV值
我希望下面的代码为从CSV文件读取的每个值分配一个变量Php 为变量指定CSV值,php,variables,csv,Php,Variables,Csv,我希望下面的代码为从CSV文件读取的每个值分配一个变量 <?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num fields in line $row: <br /&g
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
我想要make Jack变量$vrble1
、31/01/1991$vrble2
、Ross$vrble3
和15/03/1989$vrble4
我该怎么做呢?我不知道你为什么要这么做,但我认为你可以通过以下方法来做到(如果我没有弄错的话): ($c=0;$c<$num;$c++)的
{
$vname='vrble'($c+1);
$$vname=$data[$c];
}
这样,变量中就有了$vrble1、$vrble2等值
如果这能回答您的问题,请告诉我。我不知道您为什么要这样做,但我认为您可以通过以下方法来做到(如果我没有弄错的话): ($c=0;$c<$num;$c++)的
{
$vname='vrble'($c+1);
$$vname=$data[$c];
}
这样,变量中就有了$vrble1、$vrble2等值
如果这能回答您的问题,请告诉我。每次迭代都会将数据合并到单个数组中:
$file = new SplFileObject("test.csv");
$file->setFlags(SplFileObject::READ_CSV);
$data = call_user_func_array('array_merge', iterator_to_array($file));
然后您可以将数组数据提取到本地变量中,如下所示:
$data = array_combine(range(1, count($data)), $data);
extract($data, EXTR_PREFIX_ALL, 'vrble');
见和
但是,如果需要,您应该继续使用数组。每次迭代都将数据合并到单个数组中:
$file = new SplFileObject("test.csv");
$file->setFlags(SplFileObject::READ_CSV);
$data = call_user_func_array('array_merge', iterator_to_array($file));
然后您可以将数组数据提取到本地变量中,如下所示:
$data = array_combine(range(1, count($data)), $data);
extract($data, EXTR_PREFIX_ALL, 'vrble');
见和
但是,如果你问我的话,你应该继续使用数组。只是一个小编辑
for ($c=0; $c < $num; $c++)
{
$vname = 'vrble' . ($c+1);
$$vname = $data[$c][1];
}
($c=0;$c<$num;$c++)的
{
$vname='vrble'($c+1);
$$vname=$data[$c][1];
}
只是一个小编辑
for ($c=0; $c < $num; $c++)
{
$vname = 'vrble' . ($c+1);
$$vname = $data[$c][1];
}
($c=0;$c<$num;$c++)的
{
$vname='vrble'($c+1);
$$vname=$data[$c][1];
}
在进入while循环之前创建迭代器变量:
$i = 0;
。。。然后在while循环中执行以下操作:
list(${'vrble'.++$i}, ${'vrble'.++$i}) = $data;
(假设每行始终有2列。有关详细信息,请参阅。在进入while循环之前创建迭代器变量:
$i = 0;
<?php
$row = 1;
$arr = array();
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
$arr[$c] = $data[$c];
}
}
fclose($handle);
}
?>
…然后在while循环中执行以下操作:
list(${'vrble'.++$i}, ${'vrble'.++$i}) = $data;
(假设每行始终有2列。有关更多信息,请参阅。
<?php
$row = 1;
$arr = array();
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
$arr[$c] = $data[$c];
}
}
fclose($handle);
}
?>
为什么你不想使用数组呢?为什么你不想使用数组呢?恐怕不行,fgetcsv会将数据行中的值拆分,所以在数据中有数组(col1,col2)。现在我不确定,也无法测试它是否有效。但它只会显示CSV文件中的前两个值。(例如,Jack,31/01/1991,但不是Ross…)基本上,$vrble1是Jack,$vrble2是31/01/1991,但是如果我使用$vrble3,我会得到一个错误,说:未定义变量:vrble3True。你可以使用另一个计数器而不是$c。感谢你指出:)恐怕不是,fgetcsv从de行分割值,所以在数据中有数组(col1,col2).现在我不确定,也无法测试它。这是有效的。但它只会显示CSV文件中的前两个值。(例如,Jack,31/01/1991,但不是Ross…)所以基本上$vrble1是Jack,$vrble2是31/01/1991,但是如果我使用$vrble3,我会得到一个错误,说:未定义变量:vrble3True。你可以使用另一个计数器而不是$c。谢谢你指出:)听起来好像可以工作,但我不太明白如何在我的代码中实现它。你能把全部代码都贴出来吗?那会有帮助的。谢谢!只需添加$i=0代码>紧跟在$row=0之后代码>和while
行后面的另一行。听起来它可以工作,但我不太明白如何在代码中实现它。你能把全部代码都贴出来吗?那会有帮助的。谢谢!只需添加$i=0代码>紧跟在$row=0之后代码>和之后的另一行,而行。好的,谢谢!我现在明白我做错了什么。我想知道,如何显示数组中的第一个条目?数据[0]?是的,$data[0]
应该是第一个条目,如果不起作用,请尝试$data[1]
。执行var\u转储($data)代码>查看正在播放的内容。是的,$data[1]有效!你解决了我所有的问题。多谢各位。我真的很感激!好的,谢谢!我现在明白我做错了什么。我想知道,如何显示数组中的第一个条目?数据[0]?是的,$data[0]
应该是第一个条目,如果不起作用,请尝试$data[1]
。执行var\u转储($data)代码>查看正在播放的内容。是的,$data[1]有效!你解决了我所有的问题。多谢各位。我真的很感激!