代码之家  ›  专栏  ›  技术社区  ›  Solace

如何将键值对存储在.csv文件中,然后将其作为关联数组检索?

  •  0
  • Solace  · 技术社区  · 10 年前

    当我为 .csv 包含内容的文件: WaterMelon,BlueBerry,BlackBerry ,我知道 输出: Array ( [0] => WaterMelon, [1]=>BlueBerry, [2]=>BlackBerry )

    我得到的输出是一个简单的数组,因为我在 .csv文件 文件

    问题:-

    但如果我想储存 key-value pairs 在.csv文件中,然后获得如下输出: Array ( [FruitOne] => WaterMelon, [FruitTwo]=>BlueBerry, [FruitThree]=>BlackBerry ) 我该怎么做?

    while (($line = fgetcsv($file)) !== FALSE) {
      //$line is an array of the csv elements
      print_r($line); //check. print_r() returns an array in human readable form.
    }
    
    fclose($file);
    
    2 回复  |  直到 10 年前
        1
  •  1
  •   AbraCadaver    10 年前

    CSV文件可以而且很多时候都有标题行。所以你可以用这个读第一行,然后用 array_combine :

    $headers = fgetcsv($file);
    while (($line = fgetcsv($file)) !== FALSE) {
        print_r(array_combine($headers, $line));
    }
    

    在创建CSV文件时使用相同的概念来添加标题。

    或者,只需定义 $headers 并使用相同的循环和 阵列_组合 :

    $headers = array('FruitOne', 'FruitTwo', 'FruitThree');
    
        2
  •  0
  •   Daniel K.    10 年前

    尝试以下操作:

    <?php 
        function getArrayFromCsv($file) { 
            if (($handle = fopen($file, "r")) !== FALSE) { 
                while (($lineArray = fgetcsv($handle)) !== FALSE) { 
                   $dataArray[$lineArray[0]] = $lineArray[1]; 
                } 
                fclose($handle); 
            } 
            return $dataArray; 
        } 
    ?>