タブで区切られたファイルを使用し、各行を配列にして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++;
}
}
}
}
ヘッダーを省略してデフォルトの数値キーで配列値を呼び出すなど、他の方法でこれを行うことができることはわかっていますが、それは動的な処理にはつながりません。