0

我正在尝试一个脚本,它使用一个制表符分隔的文件并将每一行变成一个数组以提交到数据库中。

文件中的第一行是标题,我的目标是使用标题作为要提交到数据库的数据的数组键。

我的问题是,即使标头已成功设置为键,但由于某种原因无法识别键,并且当我调用 $data['Company'] 等特定值时,我在日志中收到“未定义索引”通知。

当我执行 print_r 时,它看起来像这样:

Array (
    [Company] => Parking
    [Department] => 2290333
    [First Name] => JOE
    [Last Name] => SMITH
    [Hint] => LAST NAME
    [Hint answer] => SMITH
    [Add-Delete] => Add )

到目前为止,我的函数如下所示:

public function updatePeople($file) {
        $today = date("Y-m-d");
        $inactives = array(); //an array to contain the jde numbers of locations not in the .csv
        $i = 0;

        if ($file['file']['size'] > 0) {

            $type = $file['file']['type'];
            if($type == 'text/plain') {

                $tmp_name = $file['file']['tmp_name'];
                $handle = fopen($tmp_name,"r");

                while($data = fgetcsv($handle,1000,"\t")) {

                    if($i != 0) {  //skip headers
                        $data = array_combine($keys,$data);

                        print '<p>' . $data['Company'] . '</p>';  //results in undefined index notice
                        print '<pre>'; print_r($data); print '</pre>'; //prints the key/vals just fine

                    }
                    else {  //convert first line to array keys
                        $keys = $data;
                        $keys = array_map('trim', $keys);
                        $keys[0] = substr($keys[0], 2); //trim off artifact that appears at beginning of first header

                    }

                    $i++;
                }
            }
        }   
    }

我知道我可以通过其他方式做到这一点,比如放弃标题并通过默认数字键调用数组值,但这不会导致动态处理。

4

0 回答 0