【问题标题】:CSV column values as variables in PHPCSV 列值作为 PHP 中的变量
【发布时间】:2020-01-27 13:02:55
【问题描述】:

我有简单的 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);
}
?>

【问题讨论】:

  • “这可能吗?” - 以最简单的方式,您可以简单地将值分配这些变量,$id = $data[0]; $ean = $data[1]; ... ?
  • 问题很不清楚。你能详细说明一下吗?

标签: php csv fgetcsv


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    这里是一些创建关联数组的示例代码。

    $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;
     }
    

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 2014-01-11
      • 1970-01-01
      • 2014-10-11
      • 2012-08-23
      • 2012-08-30
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多