【问题标题】:Read .csv file and save its values in a list of arrays读取 .csv 文件并将其值保存在数组列表中
【发布时间】:2012-11-15 19:40:23
【问题描述】:

我是 php 编程的新手,但我已经被这段代码困住了一段时间。 我想逐行读取 .csv 文件,然后将其值保存在数组列表中。

$file = fopen('Sub-Companies.csv', 'r');    
while (($line =
fgetcsv($file)) !== FALSE) { 
print_r($line);
list($customer_id[],$company_name[],$department[],$employee[],$country[],$zipcode[],$address[],$city[],
$smth1[], $smth2[], $phone_no1[],$phone_no2[],$email[],$website[],
$customer_no[],$problem1[],$problem2[]) = explode(";",$line);  }
fclose($file); var_dump($customer_id);

问题是,虽然文件被正确读取,但分解不起作用,数组似乎为空。

我正在考虑的一件事是一些数组有更多的“;”比其他人,所以这可能是一个问题,这就是为什么我有数组 $problem1 和 $problem2,以便存储这个数组的值。

任何帮助都会很棒!

【问题讨论】:

  • 1.) 请发布您的 CSV 文件示例。 2.) 我从来没有见过这样的代码使用list() 超过10个参数!!
  • 例如我有这个条目:601C6E90-DC11-41B1-B121-30859C532046;;NULL;NULL;DE;19073;NULL;Wittenförden;NULL;NULL;0004004;839828298;email@ address.de;NULL;ibd21 你觉得我有这么多参数有问题吗?
  • 如果它有帮助,我也试过这个代码:$string1 = "his; is a; nw;house"; $testarray = explode(";",$string); print_r($testarray); 有效,但是当我使用这个$testarray = explode(";",$line); print_r($testarray); 时它没有。
  • 这是一个阅读代码的问题 ;) 你用错了fgetcsv()!试试这个脚本:pastebin.com/1P70pxc0
  • 好吧,我按照你的建议做了,当我打印时它给了我 NULL。

标签: php csv


【解决方案1】:

您以错误的方式使用fgetcsv()

我们在chatting here on StackOverflow 时找到了这个解决方案。

<?php
// Create file data.csv with your data
$handle = fopen('Sub-Companies.csv', 'r');

$customer_id = array();
$xyz_array = array();
// ...

// Better use a specified length (second parameter) instead of 0
// It slows down the whole process of reading the data!
while (($line = fgetcsv($handle, 0, ';')) !== FALSE) {
  $customer_id[] = $line[0];
    $xyz_array[] = $line[1];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2023-04-05
    • 2021-06-03
    • 2018-01-17
    • 2016-07-26
    • 2020-04-05
    相关资源
    最近更新 更多