从CSV获取每行数据,然后在变量中获取其数据单元格

时间:2012-05-22 13:11:56

标签: php excel csv

我的CSV有像这样的表格

现在,我想要做的是,对于每条记录,我想获取相应的单元格数据并将它们带入变量中。 (我需要用变量执行一些任务)。

e.g。 (对于每一行,它们在变量中的值)

$id = 1;
$name = 'Test';

等等

可以使用数组来执行此操作。

例如,     $ row_1 =('1','测试','芝加哥','测试用户','21','123456789')

我尝试搜索谷歌,但结果与我的查询无关。

5 个答案:

答案 0 :(得分:2)

因此,您可以在每一行上运行for循环,并让它从每行和单元格返回数据。

<?php
    $row = 1;
    if (($handle = fopen("data.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";
               // echo $data[1];
            }
        }
        fclose($handle);
    }
    ?>

请记住将您的csv文件位置放在代码中

希望有所帮助

答案 1 :(得分:0)

doh ...以为是JavaScript ..

但我想我可以尝试使用PHP:http://codepad.org/8SBgTCYy

$labels = explode(",", "id,name,city,username,contact_id,phone");
$values = explode(",", "1,Test,chicage,testuser,21,123456789");

$i = 0;
$count = count($labels);
$object = array();
for ( ; $i < $count; $i++ ) {
    $object[$labels[$i]] = $values[$i];
}

var_dump($object);

和另一个:http://codepad.org/AmVp08QR

$values = explode(",", "id,1,name,Test,city,chicago,username,testuser,contact_id,21,phone,123456789");

$i = 0;
$count = count($values);
$object = array();

for( ; $i < $count; $i++ ) {
    $object[$values[$i]] = $values[$i+1];
}

var_dump($object);

像这样:

id,name,city,username,contact_id,phone

1,Test,chicage,testuser,21,123456789

var labels = "id,name,city,username,contact_id,phone".split(","),
    values = "1,Test,chicage,testuser,21,123456789".split(","),

    object = {},
    i = 0,
    len = labels.length;

for( ; i < len; i++) object[labels[i]] = values[i];

现在您将名为object的对象称为:

{
    id: "1",
    name: "Test",
    city: "chicago",
    username: "testuser",
    contact_id: "21",
    phone: "123456789"
} 

或者像这样:

id,1,name,Test,city,chicago,username,testuser,contact_id,21,phone,123456789

var values = "id,1,name,Test,city,chicago,username,testuser,contact_id,21,phone,123456789".split(","),

    object = {},
    i = 0,
    len = values.length;

for ( ; i < len; i+=2 ) {
    object[values[i]] = values[i+1];
}

然后你最终得到了相同的对象。

答案 2 :(得分:0)

看看fgetcsv()和家人......

此外,您的CSV文件更符合CSV标准;我发现很多CSV文件是使用非标准约定生成的...它使互操作非常痛苦。

http://www.php.net/manual/en/function.fgetcsv.php

http://www.php.net/manual/en/function.fputcsv.php

http://www.php.net/manual/en/function.str-getcsv.php

答案 3 :(得分:0)

array_combine()可能会对您有所帮助:

$labels = explode(",", "id,name,city,username,contact_id,phone"); 
$values = explode(",", "1,Test,chicage,testuser,21,123456789"); 
//  Use fgetcsv() to read these from your file

$data = array_combine($labels,$values);

var_dump($data);

答案 4 :(得分:0)

我采用了自己的技术,将每一行逗号分开。