首页 > 解决方案 > CSV 列值作为 PHP 中的变量

问题描述

我有简单的 csv 文件:

编号 | 恩


1 | 2342342345234


2 | 3453453454353


我想通过 foreach 循环中的变量访问这些数据: $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);
}
?>

标签: phpcsvfgetcsv

解决方案


您的分隔符是管道,而不是逗号,因此请更改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];

然后使用foreachwithkey访问适当的配对。

foreach($ids as $key => $id) {
    echo $id . ' ' . $eans[$key];
}

推荐阅读