3

我的 CSV 有类似的表格

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

例如(对于每一行,它们在变量中的值)

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

等等

数组可以用来做到这一点。

例如,$row_1 = ('1', 'Test', 'chicago', 'testuser', '21', '123456789')

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

4

5 回答 5

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 文件位置放在代码中

希望有帮助

于 2015-03-30T14:27:16.597 回答
0

哦...以为是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];
}

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

于 2012-05-22T13:17:14.387 回答
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

于 2012-05-22T13:26:27.893 回答
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);
于 2012-05-22T13:27:33.743 回答
0

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

于 2012-05-27T02:44:05.423 回答