如何将csv文件的每一行存储到php中的数组

时间:2011-04-11 15:48:45

标签: php

我在csv文件中有如下数据。

先生,Vinay,H S,应用工程师,vinay.hs @ springpeople.com,99005809800,是 先生,Mahammad,Hussain,应用工程师,vinay.hs @ springpeople.com,99005809800,是

我想存储每个数组中的每一行。解释一下如何做到这一点

3 个答案:

答案 0 :(得分:1)

我不理解每个数组中的每一行。

使用fgetcsv()函数读取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);
}
?>

OR 如果要将它们存储在数组中,可以使用

$data = array();
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while(($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $data[] = $row;
    }
}

答案 1 :(得分:0)

您可以使用fgetcsv()

$data = array();
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while(($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $data[] = $row;
    }
}

答案 2 :(得分:0)

假设CSV是一个文件(如果没有,请使CSV与$csv匹配,这实际上是在单独的行中分解的文件),这是一个非常简单的方法:

$csv = file('mycsv.csv'); $result = array();
//iterate the lines
foreach ($csv as $line)
  // I'd recommend  more robust "csv-following" method though (fgetcsv maybe)
  $result[] = explode(',',$result); 
//show the results
print_r($result);

虽然fgetcsv可能是一个更安全的赌注(正如其他人所提到的)(参见文档)。


进一步扩展您的评论:

//iterate the lines
foreach ($csv as $line)
  // I'd recommend  more robust "csv-following" method though (fgetcsv maybe)
  $result[] = explode(',',$result); 

可以成为:

//iterate the lines
foreach ($csv as $line)
  // combine the current results with the new results
  $result = array_marge($result,$line);

或者,如果订单很重要:

//iterate the lines
foreach ($csv as $line)
  // add each result on to the end of the result array
  foreach($line as $val)
    // add each value
    $result[] = $val;