打破PHP中的循环并重置计数器

时间:2019-03-26 13:45:49

标签: php

我的代码中存在一些逻辑错误,我不确定我在这里做错了什么。

首先进行设置,我正在读取一个.json文件,它位于以下布局中:

enter image description here

因此,多边形元素位于每1、3、5 ..处,而学校名称是之前的那个。

现在,我有另一个.csv文件,在该文件中,我将采用不同的经度和纬度值。基本上,我必须查看CSV文件中的经纬度是否在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++;
    }

这是我的示例输出:

enter image description here

此图像中的纬度和经度来自csv文件。

预期的输出应该是在纬度和经度上都长,它应该越过json中的多边形,如果在其内部,则返回第一个元素即学校。在这里,$ polygonIndex仅停留3,我猜这是问题。

如果仍然不清楚我要做什么,请告诉我。谢谢。

0 个答案:

没有答案