Функция повторения PHP 10 раз, если значение запятая - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь повторить функцию, только если значение равно ",":

Это мой код для попытки получить координаты из адреса, но иногда он получает только "," поэтому я хочу, чтобы он пробовал 10 раз, пока не получит полные координаты.

$coordinates1 = getCoordinates($placeadress); 
$i == 0;
while (($coordinates1 == ',') && ($i <= 10)) {
    $coordinates1 = getCoordinates($placeadress);
    $i++;
}

Код функции такой:

function getCoordinates($address) {
    $address = str_replace(" ", "+", $address); // replace all the white space with "+" sign to match with google search pattern
    $address = str_replace("-", "+", $address); // replace all the "-"  with "+" sign to match with google search pattern
    $url = "http://maps.google.com/maps/api/geocode/json?address=$address";
    $response = file_get_contents($url);
    $json = json_decode($response,TRUE); //generate array object from the response from the web
    return ($json['results'][0]['geometry']['location']['lat'].",".$json['results'][0]['geometry']['location']['lng']);
}   

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Вы можете просто сократить весь этот код на некоторое время с пустым блоком:

<?php
$i = 0;
while (
    ($coords = getLatLong($place))
    && $coords == ','
    && $i++ < 10
);

Возможно, до сих пор нет гарантии, что верное значение будет возвращено даже после 10-кратного вызова функции.

0 голосов
/ 06 мая 2018

Может быть попробовать это

$coordinates1 = getCoordinates($placeadress); 
$i = 0;
    while ($i <= 10) {
    $coordinates1 = getCoordinates($placeadress);
    if($coordinates1==',')
        $i++;
    else
        break;
    }

Это прервет цикл, как только значение координат не станет запятой, и вы готовы идти дальше. Если это запятая, она перейдет к следующей итерации в то время как

...