Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为变量指定CSV值_Php_Variables_Csv - Fatal编程技术网

Php 为变量指定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

我希望下面的代码为从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 /></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]有效!你解决了我所有的问题。多谢各位。我真的很感激!