【问题标题】:PHP Notice: Undefined offset error when importing from .csv [duplicate]PHP注意:从.csv导入时出现未定义的偏移错误[重复]
【发布时间】:2017-09-20 14:59:58
【问题描述】:

使用以下代码从 csv 导入数据时,我不断收到上述错误:

$csv_data=file_get_contents("data3_received.csv");
foreach(preg_split("/((\r?\n)|(\r\n?))/", $csv_data) as $line){
list($service_id, $ki3) = explode(',', $line,2);

数据按预期导入,但错误日志已填满,因为我们在多个 php 脚本中使用相同的代码。错误在以下行:

list($service_id, $ki3) = explode(',', $line,2);

尝试使用此处的建议:Undefined offset error on php when importing a CSV 无济于事,以及网站上的其他内容。

非常欢迎对此提供任何帮助。

【问题讨论】:

    标签: php csv undefined offset explode


    【解决方案1】:

    由于list() 试图分配两个变量,它试图访问两个数组元素[0][1]。因为一行没有逗号,所以[1]不存在。

    尝试一些不同的功能:

    $csv_data = file("data3_received.csv", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    
    foreach($csv_data as $line) {
        $data[] = str_getcsv($line);
    }
    

    要获取单个变量,您需要检查是否有多个列或类似的列:

    if(count($data = str_getcsv($line)) > 1) {
        list($service_id, $ki3) = $data;
    } else {
        $service_id = $data[0];
    }
    

    【讨论】:

    • 现在可以正常运行,但是如何使用数据,即每列值作为变量?
    • 编辑了一个可能性。
    • 这正是我需要的,谢谢!
    猜你喜欢
    • 2015-11-21
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多