Как я могу проанализировать CSV в массив с первым значением как ключ?

Таким образом, у меня есть файл 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 выше, как массив был бы структурирован?

6
задан ThinkingInBits 5 August 2010 в 14:32
поделиться

4 ответа

Вы можете использовать fgetcsv () для чтения строки из файла в массив. Примерно так:

$a = array();
$f = fopen(....);
while ($line = fgetcsv($f))
{
    $key = array_shift($line);
    $a[$key] = $line;
}
fclose($f);
var_dump($a);
11
ответ дан 8 December 2019 в 17:17
поделиться

Если вы читаете файл, я могу порекомендовать использовать что-то вроде fgetcsv (). Это прочитает каждую строку в CSV в массив, содержащий все столбцы как значения.

http://at2.php.net/fgetcsv

0
ответ дан 8 December 2019 в 17:17
поделиться
$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.");

  }
0
ответ дан 8 December 2019 в 17:17
поделиться

В вашем новом файле с двумя столбцами $ qid должен стать массивом с двумя значениями для каждой строки.

$csvDelim = ",";
$qid = str_getcsv($csvData, $csvDelim);
$text[$qid[0]] = $qid[1];
0
ответ дан 8 December 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: