所以我有一个看起来像这样的CSV文件:
12345, Here is some text
20394, Here is some more text
如何将其插入到看起来像这样的数组中
$text = "12345" => "Here is some text",
"20394" => "Here is some more text";
这是我目前必须在单层CSV上获得单个基于数字的值
if ($handle = fopen("$qid", "r")) {
$csvData = file_get_contents($qid);
$csvDelim = "\r";
$qid = array();
$qid = str_getcsv($csvData, $csvDelim);
} else {
die("Could not open CSV file.");
}
感谢您的回复,但我仍然看到了一个潜在的问题。使用这些解决方案,值不会以这种方式存储:
$array[0] = 12345
$array[1] = Here is some text 20394
$array[2] = Here is some more text
如果我在上面的示例csv上尝试过这个,那么数组将如何构建?
答案 0 :(得分:11)
您可以使用fgetcsv()
将文件中的行读入数组。所以像这样:
$a = array();
$f = fopen(....);
while ($line = fgetcsv($f))
{
$key = array_shift($line);
$a[$key] = $line;
}
fclose($f);
var_dump($a);
答案 1 :(得分:3)
假设CSV文件中的第一行包含列标题,这将为每行的数据创建一个关联数组:
$filepath = "./test.csv";
$file = fopen($filepath, "r") or die("Error opening file");
$i = 0;
while(($line = fgetcsv($file)) !== FALSE) {
if($i == 0) {
$c = 0;
foreach($line as $col) {
$cols[$c] = $col;
$c++;
}
} else if($i > 0) {
$c = 0;
foreach($line as $col) {
$data[$i][$cols[$c]] = $col;
$c++;
}
}
$i++;
}
print_r($data);
答案 2 :(得分:0)
如果您正在阅读文件我可以推荐使用类似fgetcsv()的内容 这会将CSV中的每一行读入一个包含所有列作为值的数组。
答案 3 :(得分:0)
$csv_lines = explode('\n',$csv_text);
foreach($csv_lines as $line) {
$csv_array[] = explode(',',$line,1);
}
编辑 - 基于原始问题后发布的代码:
if ($handle = fopen("$qid", "r")) {
$csvData = file_get_contents($qid);
$csvDelim = "\r"; // assume this is the line delim?
$csv_lines = explode($csvDelim,$csvData);
foreach($csv_lines as $line) {
$qid[] = explode(',',$line,1);
}
} else {
die("Could not open CSV file.");
}
答案 4 :(得分:0)
如果你的新文件有两列,$ qid应该成为一个数组,每行有两个值。
$csvDelim = ",";
$qid = str_getcsv($csvData, $csvDelim);
$text[$qid[0]] = $qid[1];