php - 在 PHP 中跳出循环并重置计数器
问题描述
我的代码中有一些逻辑错误,我不确定我在这里做错了什么。
首先进行设置,我有一个正在阅读的 .json 文件,该文件位于此布局中:
因此,多边形元素位于每 1、3、5、.. 处,而学校名称在此之前是一个。
现在我有另一个 .csv 文件,我从中获取不同的 lat 和 long 值。基本上,我必须查看 csv 文件中的 lat long 是否在 json 文件中描述的任何这些多边形内。
这是我接受 json 文件和 csv 文件的 PHP 代码的一部分。我的逻辑是,我从 CSV 中获取一个经纬度值,然后想要遍历 json 文件中的每个多边形。
如果你按照下面的代码,我会接受这些值,当我满足它在多边形之外的条件时,它就会跳出第二个 while 循环,采用另一组纬度和经度。
$string = file_get_contents("Schools.json", 0, null, null);
$json_a = json_decode($string, true);
$start_row = 4;
$rowID = 1;
$polygonIndex = 1;
$insideCheck = 0;
$file = fopen("ActiveProperty.csv", "r");
while (($row = fgetcsv($file)) !== FALSE){
if($rowID >= $start_row){
$points = array($row[52] . ' ' . $row[49]);
$polygonIndex = 1;
while ($polygonIndex < 454){
$polygon = $json_a[$polygonIndex]['Polygons'];
foreach($points as $key => $point) {
if ($pointLocation->pointInPolygon($point, $polygon) == "outside"){
echo "point " . ($key+1) . " ($point): " . $pointLocation->pointInPolygon($point, $polygon);
echo "<br>";
$polygonIndex = $polygonIndex + 2;
echo $polygonIndex;
$insideCheck = 0;
break;
}
else {
echo $json_a[$polygonIndex - 1];
echo "<br>";
echo "point " . ($key+1) . " ($point): " . $pointLocation->pointInPolygon($point, $polygon);
echo "<br>";
$insideCheck = 1;
break;
}
}
if ($insideCheck = 0) {
echo "out of foreach 0";
continue;
}
else {
echo "out of foreach";
$insideCheck = 0;
break;
}
}
}
$rowID++;
}
这是我的示例输出:
此图像中的经纬度来自 csv 文件。
预期的输出应该是经纬度,它应该越过 json 中的多边形,如果它在里面,则返回第一个元素,即学校。这里 $polygonIndex 只是保持 3 我猜这是问题所在。
如果这仍然不清楚我要做什么,请告诉我。谢谢。
解决方案
推荐阅读
- window - 通过命令提示符或 powershall 在 Windows 10 中更改 Wi-Fi 软件的无线电状态
- visual-studio - Visual Studio 2019 - Gold (Olive) 中的函数语法亮点
- amazon-web-services - 尝试使用 authorized_key 模块允许一台远程服务器登录到其他 3 台远程服务器
- ionic-framework - ionic 4/5 应用程序从浏览器按钮单击打开
- debugging - 执行不会记录在 Apps 脚本信息中心的 Stackdriver 日志中
- ansible - 如何在ansible playbook中的when条件下使用主机变量
- google-chrome - 使用 HTTPS 从 chrome 从 S3 下载图像时出现 CORS 错误,但在 Firefox 中同样有效
- c# - Form1.cs [设计] 不见了
- amazon-web-services - 将 IAM 密钥分配给数据中心
- android - 有没有一种方法可以在颤振中实现一种像信标一样的蓝牙广播?