将csv文件的数据存储到2d数组中

时间:2012-02-06 06:50:25

标签: php csv

假设我有以下名为mycsv.csv的

的csv文件
   "Date"      "order 1"   "order 2"   "order 3"          "total cost"
   01/04/2006   4 tires      1 oil       6 sparks plugs    "434.00$'
   03/08/2006   3 tires      2 oil       2 sparks plugs    "234.00$'
   03/12/2006   2 tires      0 oil       1 sparks plugs    "134.00$'

我想知道如何将这些数据存储在二维数组中,我们将非常感谢您的帮助!

6 个答案:

答案 0 :(得分:4)

您可以使用fgetcsv(请参阅:http://php.net/manual/en/function.fgetcsv.php)。与str_getcsv的区别在于它需要File resource作为参数,而不是String

您也可以将每一行存储在另一个阵列中以拥有2D阵列,例如(调整手册页示例)

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

答案 1 :(得分:1)

使用str_getcsv功能:http://php.net/str_getcsv

$result = array();

$keys = array('Date', 'order 1', 'order 2', 'order 3', 'total cost');

foreach (file('mycsv.csv') as $key => $str)
{
    if ($key == 0)
        continue;   // skip first line

    $values = str_getcsv($str, "\t", '', '');

    $result[] = array_combine($keys, $values);
}

print_r($result);

答案 2 :(得分:1)

通常,我使用str_getcsv() PHP本机函数来解析CSV数据。

答案 3 :(得分:1)

另一种快速方法:

$data = array_map(function($line) {
    return str_getcsv($line, ',');
}, file('data.csv', FILE_IGNORE_NEW_LINES));

答案 4 :(得分:0)

将此归档的最简单方法是使用fgetcsv - 函数。

示例(摘自manual page并略有改动):

if (($handle = fopen("mycsv.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
}    

答案 5 :(得分:0)

As mentioned on comment from PHP documentation

$csv = array_map('str_getcsv', file('data.csv'));