PHP:解析导入csv数据的脚本中的错误

时间:2015-12-09 10:00:17

标签: php mysql csv import-from-excel

我创建了这个小脚本,以便解析cvs文件,然后将其传递给mysql。我需要对它进行一些编辑,但我刚开始根据http://csv.thephpleague.com手册编辑日期格式。

<?php

    if (!ini_get("auto_detect_line_endings")) {
        ini_set("auto_detect_line_endings", '1');
    }

    use League\Csv\Reader;

    $reality = Reader::createFromPath('Workbook3.csv');
    $planed = Reader::createFromPath('Workbook4.csv');

    /*this function removes the "First name" "Second name" elements and 
    creates one that actually has the entier name in capital*/
    $functionHRT = function ($row) {
        $row['hrtData'] => DateTimeImmutable::createFromFormat($row['Contract Start'], 'd-m-Y'); /*this is line 18*/
    }

    $hrtData = $reality
                // ->setOffset(7);
                ->fetchAssoc( , $functionHRT());
    $hrtData[0]['Contract Start']->format('Y-m-d');        

    ?>

当我尝试运行时,我得到了一个:

Parse error: parse error in /Users/nefeli/Code/ph/script.php on line 18

错误代码。我不确定问题语法错误是什么。对此有何见解?

1 个答案:

答案 0 :(得分:2)

此行有语法错误:

$reality->fetchAssoc( , $functionHRT());

根据docs,这是该方法的签名:

  

fetchAssoc($ offset_or_keys = 0,callable $ callable = null)

因此,如果要传递回调,还必须指定函数的第一个参数。您可以使用默认值(0)并将回调作为第二个参数传递。

还要记住,当你传递回调时,你不必调用它(使用你正在做的括号)但你只需要指定变量,就像你之前声明的那样{{3并将其存储在$functionHRT变量

所以你的电话应该是:

$reality->fetchAssoc( 0, $functionHRT );

声明中的另一个错误是:

$functionHRT = function ($row) {
    $row['hrtData'] => DateTimeImmutable::createFromFormat($row['Contract Start'], 'd-m-Y'); /*this is line 18*/
}

您使用了错误的运算符为数组赋值。它应该是:

$functionHRT = function ($row) {
    $row['hrtData'] = DateTimeImmutable::createFromFormat($row['Contract Start'], 'd-m-Y'); /*this is line 18*/     
};

您还需要在回调声明的末尾添加分号