将CSV值分配给变量

时间:2012-12-18 11:34:07

标签: 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 /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
?>

例如,在CSV文件中,我有2个Excel列中的4个值:

Jack,31/01/1991
Ross,15/03/1989

我希望make Jack变量$vrble1,31/01/1991 $vrble2,Ross $vrble3和15/03/1989 $vrble4

我该怎么做?

5 个答案:

答案 0 :(得分:1)

我不知道你为什么要这样做,但我认为你可以这样做(如果我没有弄错的话):

for ($c=0; $c < $num; $c++) {
  $vname = 'vrble' . ($c+1);
  $$vname = $data[$c];
}

有了这个,你就可以使用$ vrble1,$ vrble2等变量中的值。

如果这回答了您的问题,请告诉我。

答案 1 :(得分:0)

每次迭代都会将数据合并到一个数组中:

$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');

请参阅array_combineextract

但是,如果你问我,你应该继续使用数组。

答案 2 :(得分:0)

只是一个小编辑

for ($c=0; $c < $num; $c++) 
{
    $vname = 'vrble' . ($c+1);
    $$vname = $data[$c][1];
}

答案 3 :(得分:0)

在进入while循环之前创建一个迭代器变量:

$i = 0;

...然后在while循环中,执行以下操作:

list(${'vrble'.++$i}, ${'vrble'.++$i}) = $data;

(假设每行总共有2列。有关详细信息,请参阅manual on list()

答案 4 :(得分: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);
}
?>