2 つの異なる 2 つの CSV ファイルから情報を取得し、それらを配列に追加しようとしています。私が基本的に行うことは、最初のファイルを開き、その内容を文字列として配列に取り込むことです。次に、ここでトリッキーな部分が来ます。両方のファイルに共通の ID フィールドがあるため、ID が一致するたびに配列に取り込む必要があります。
私はこれを 2 つの異なる方法で実行しようとしました。1 つのファイルを開き、この中でもう 1 つのファイルを開き、比較して配列に保存します。もう 1 つの方法は、両方のファイルからすべての情報を 2 つの別々の配列に取得し、一致するものを見つけて 3 番目の配列に取得することでした。
コードは次のとおりです。
$handle0 = \fopen("/Data/mountain1.csv", "r");
if ($handle0) {
$line0 = 0;
while (($buffer0 = fgets($handle0, 4000)) !== false) {
if ($line0 > 0){
$mountainArray = str_getcsv($buffer0, ",");
$obj = array();
$obj["id"] = $mountainArray[2];
$obj["name"] = $mountainArray[0];
$obj["country"] = $mountainArray[1];
$handle1 = fopen("/Data/mountain1.csv", "r");
if ($handle1) {
$line1 = 0;
while (($buffer1 = fgets($handle1, 4000)) !== false) {
if ($line1 > 0) {
$latlonArray = str_getcsv($buffer1, ",");
$content = array();
$content["id"] = $latlonArray[1];
if ((int)$content["id"] == (int)$obj["id"]) {
$obj["latitude"] = $latlonArray[7];
$obj["longitude"] = $latlonArray[8];
}
$line1++;
}
}
fclose($handle1);
}
$mountain[] = $obj;
}
$line0++;
}
fclose($handle0);
}
このコードはループするだけで何もしません
if ($handle0) {
while (($buffer0 = fgets($handle0, 4000)) !== false) {
$mountainArray = str_getcsv($buffer0, ",");
$content0 = array();
$content0["id"] = $mountainArray[2];
$content0["name"] = $mountainArray[0];
$content0["country"] = $mountainArray[1];
$mountain[] = $content0;
}
fclose($handle0);
}
if ($handle1) {
while (($buffer1 = fgets($handle1, 4000)) !== false) {
$latlonArray = str_getcsv($handle1, ",");
$content1 = array();
$content1["id"] = $latlonArray[1];
$content1["latitude"] = $latlonArray[7];
$content1["longitude"] = $latlonArray[8];
$latlon[] = $content1;
}
fclose($handle1);
}
foreach ($mountain as $row0) {
$obj = array();
$obj["id"] = $row0["productUid"];
$obj["name"] = $row0["name"];
$obj["country"] = $row0["address"];
foreach ($latlon as $row1) {
if((int)$row1["id"] == (int)$row0["id"]) {
$obj["latitude"] = $row1["latitude"];
$obj["longitude"] = $row1["longitude"];
}
}
$mountains[] = $obj;
}
そして、これは私にnullを返すだけです...