CSV 列值作为 PHP 中的变量

CSV column values as variables in 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);
}
?>

下面是一些创建关联数组的示例代码。

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

你的定界符是竖线,不是逗号所以改变你的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];
}