0

タブで区切られたファイルを使用し、各行を配列にしてDBに送信するスクリプトを試しています。

ファイルの最初の行はヘッダーです。私の目標は、DB に送信されるデータの配列キーとしてヘッダーを使用することです。

私の問題は、ヘッダーがキーとして正常に設定されていても、何らかの理由でキーが認識されず、$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