Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将键值对存储在.csv文件中,然后将其作为关联数组检索?_Php_File_Csv_Associative Array_Fgetcsv - Fatal编程技术网

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

Php 如何将键值对存储在.csv文件中,然后将其作为关联数组检索?,php,file,csv,associative-array,fgetcsv,Php,File,Csv,Associative Array,Fgetcsv,当我为包含内容的.csv文件应用以下代码时:西瓜、蓝莓、黑莓,我得到输出:数组([0]=>西瓜、[1]=>蓝莓、[2]=>黑莓) 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); 我

当我为包含内容的
.csv
文件应用以下代码时:
西瓜、蓝莓、黑莓
,我得到输出:
数组([0]=>西瓜、[1]=>蓝莓、[2]=>黑莓)

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);
我得到的输出是一个简单的数组,因为我已将简单值存储到
.csv
文件中

问题:-

但是如果我想将
键值对存储在.csv文件中,然后获得如下输出,该怎么办
Array([FruitOne]=>西瓜、[FruitTwo]=>BlueBerry、[FruitThree]=>BlackBerry)
我该怎么做?


试着这样做:

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

一个CSV文件可以而且很多时候确实有一个标题行。因此,您可以使用它来读取第一行,然后使用
array\u combine

$headers = fgetcsv($file);
while (($line = fgetcsv($file)) !== FALSE) {
    print_r(array_combine($headers, $line));
}
$headers = array('FruitOne', 'FruitTwo', 'FruitThree');
在创建CSV文件以添加标题时使用相同的概念

或者,只需自己定义
$headers
,并使用相同的循环和
数组\u组合

$headers = fgetcsv($file);
while (($line = fgetcsv($file)) !== FALSE) {
    print_r(array_combine($headers, $line));
}
$headers = array('FruitOne', 'FruitTwo', 'FruitThree');

csv是否适合此格式?服务器上的serialize()如何array@Dagon对serialize()的一点了解告诉我,我可以在数组上调用此函数,它将生成数组的可存储版本,然后我可以将此“可存储版本”存储在文件中吗?其次,这些值将动态地添加到数组(或文件,无论我使用什么)中。