csv ファイルから、ヘッダーと値を抽出する必要があります。どちらも後でフロントエンドでアクセスされます。
$header = array();
$contacts = array();
if ($request->isMethod('POST')) {
if (($handle = fopen($_FILES['file']['tmp_name'], "r")) !== FALSE) {
$header = fgetcsv($handle, 1000, ",");
while (($values = fgetcsv($handle, 1000, ",")) !== FALSE) {
// array_combine
// Creates an array by using one array for keys
// and another for its values
$contacts[] = array_combine($header, $values);
}
fclose($handle);
}
}
このようなcsvファイルで動作します
Name,Firstname,Organisation,
Bar,Foo,SO,
Gmail の連絡先をエクスポートし、上記のコードを使用して読み取ろうとしましたが、次のエラーが表示されます
警告: array_combine() [function.array-combine]: 両方のパラメーターの要素数は同じでなければなりません
Gmailのcsvは次のようになります
Name,Firstname,Organisation
Bar,Foo,SO
最後の欠落,
はエラーの理由ですか? 何が問題で、どうすれば修正できますか?
SOでこれを見つけました
function array_combine2($arr1, $arr2) {
$count = min(count($arr1), count($arr2));
return array_combine(array_slice($arr1, 0, $count),
array_slice($arr2, 0, $count));
}
これは機能しますが、名前フィールドをスキップし、すべてのフィールドが結合されるわけではありません。これは、gmail の csv が実際には有効ではないためですか? 助言がありますか?