循环通过CSV文件

时间:2015-11-12 22:44:32

标签: php csv

如何使用CSV文件进行foreach。

假设我已经打开了一个看起来像这样的csv文件---

Array
(
    [0] => Category ID
    [1] => Category
    [2] => Country
    [3] => Original price
    [4] => Reduce price
)
Array
(
    [0] => 11
    [1] => Phone cases
    [2] => Denmark
    [3] => 90,99
    [4] => 120
)
Array
(
    [0] => 13
    [1] => Shoes
    [2] => Denmark
    [3] => 180,99
    [4] => 200
) 

那么我怎样才能将所有数据循环存储在一个数组中。

我试过这样,但它不起作用。

      $all_data = array();
        foreach ($result as $key => $obj) {

            $doc = array();
            $doc['id'] = $obj[$key];
            $doc['category'] = $obj[$key];
            $doc['country'] = $obj[$key];
            $doc['original_price'] = $obj[$key];
            $doc['reduce_price'] = $obj[$key];
           // array push all documents into $all_data
            $all_data [] = $doc;
        } 

任何人都知道我如何循环这些数据!

2 个答案:

答案 0 :(得分:2)

只需使用PHP documentation

if (($handle = fopen("yourfile.csv", "r")) !== FALSE) {
    $all_data = array();

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if($i==0){ continue; $i=1; }
        // Remove the first iteration as it's not "real" datas

        $all_data[] = array(
            'id' => $data[0],
            'category' => $data[1],
            'country' => $data[2],
            'original_price' => $data[3],
            'reduce_price' => $data[4],
        );
    }
    fclose($handle);
}

它必须达到你想要的。使用内置功能总是更好。如果你不能使用这个,请告诉我。

编辑:

正如@Blag所说:

  

您可以使用file_get_contents()和str_getcsv()

但这是一种不同的方法,它将整个文件加载到字符串(file_get_contents)中并在第二次解析字符串(str_getcsv)。

答案 1 :(得分:0)

这可以让您了解如何继续:

$objsOut=array();
 foreach ($result as $key => $obj) {
    $objOut = array(
        'id'=>$obj[0]
    );
    $objsOut[]=$objOut;
}