Значения столбца CSV как переменные в PHP - PullRequest
0 голосов
/ 27 января 2020

У меня есть простой CSV-файл:

id | ean


1 | 2342342345234


2 | 3453453454353


Я хочу получить доступ к этим данным по переменной в foreach l oop: $ id = 1, $ ean = 2342342345234

Возможно ли это?

<?php
$row = 1;
if (($handle = fopen("upload/products.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE) {
    $num = count($data);
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
    }
}
fclose($handle);
}
?>

Ответы [ 2 ]

1 голос
/ 27 января 2020

Ваш разделитель - это труба, а не запятая, поэтому измените третий параметр вашего fgetcsv. Затем вы можете назначить значения статически, если вы используете значения в текущей итерации, или использовать массив для последующего хранения.

$row = 1;
if (($handle = fopen("upload/products.csv", "r")) !== FALSE) {
     while (($data = fgetcsv($handle, 10000, "|")) !== FALSE) {
          $id = $data[0];
          $ean = $data[1];

...

или массив:

$row = 1;
if (($handle = fopen("upload/products.csv", "r")) !== FALSE) {
     while (($data = fgetcsv($handle, 10000, "|")) !== FALSE) {
          $ids[] = $data[0];
          $eans[] = $data[1];

, затем используйте foreach с key для доступа к соответствующим парам.

foreach($ids as $key => $id) {
    echo $id . ' ' . $eans[$key];
}
0 голосов
/ 27 января 2020

Вот пример кода для создания ассоциативного массива.

$lines = explode( "\n", file_get_contents( 'input.csv' ) );
$headers = str_getcsv( array_shift( $lines ) );
$data = array();
foreach ( $lines as $line ) {
    $row = array();
    foreach ( str_getcsv( $line ) as $key => $field )
        $row[ $headers[ $key ] ] = $field;

    $row = array_filter( $row );
    $data[] = $row;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...