我正在尝试从两个不同的两个 CSV 文件中获取信息并将它们添加到一个数组中。我所做的基本上是打开第一个文件,将其内容作为字符串放入数组中。然后是棘手的部分。这两个文件都有一个共同的 ID 字段,因此只要 ID 匹配,就必须将其放入数组中。
我尝试以两种不同的方式执行此操作,打开一个文件并在此打开另一个文件中进行比较并保存到数组中。另一种方法是将两个文件中的所有信息获取到两个单独的数组,然后找到匹配项并将它们获取到第三个数组。
这是代码:
$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给我......