Массив цикла Foreach и объект stdclass, получение значений - PullRequest
1 голос
/ 21 марта 2012

Я пытаюсь получить определенное значение с помощью foreach (который, как я считаю, является наилучшим с точки зрения производительности)

[businesses] => Array
        (
            [0] => stdClass Object
                (
                    [rating] => 4
                    [location] => stdClass Object
                        (
                            [city] => Claremont
                            [display_address] => Array
                                (
                                    [0] => 580 W First St
                                    [1] => Claremont, CA 91711
                                )

                            [geo_accuracy] => 8
                            [postal_code] => 91711
                            [country_code] => US
                            [address] => Array
                                (
                                    [0] => 580 W First St
                                )

                            [coordinate] => stdClass Object
                                (
                                    [latitude] => 34.094112
                                    [longitude] => -117.7250746
                                )
                        )

                )
)

Я пытаюсь получить широту идолгота.Но имейте в виду, что у меня будет больше, чем просто [0] => stdClass Object.Там будет несколько номеров.Я знаю, что могу сделать что-то вроде $ response-> business [0] -> location или что-то в этом роде, но это только дает ключ 0, мне нужно иметь возможность использовать ключи для его получения.

Может кто-нибудь помочь мне сделать foreach по этому вопросу?

например, я делаю это до сих пор ...

foreach($response->businesses->location as $llk=>$coordinate){

    if($llk === "coordinate"){

        $selected_lat = $coordinate->latitude;
        $selected_lng = $coordinate->longitude;
    }
}

Пока это дает мне ошибки.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 21 марта 2012

Следующее может быть именно то, что вы ищете:

foreach($response->businesses as $business) {
    if(!empty($business->location->coordinate)) {
       $coord = $business->location->coordinate;
       $selected_lat = $coord->latitude;
       $selected_long = $coord->longitude;
    }
}
1 голос
/ 21 марта 2012

Попробуйте это:

foreach ($response->businesses as $business) {
    $selected_lat = $business->location->coordinate->latitude;
    $selected_lng = $business->location->coordinate->longitude;
}
0 голосов
/ 21 марта 2012

Вам, вероятно, не нужен цикл foreach для этого, просто используйте простую итерацию массива для прохождения объектов верхнего уровня stdClass, а затем просто используйте разыменование для получения каждой пары долгота / широта.

for($i = 0; $i < count($response->businesses); $i++)
{
    $coords = $response->businesses[$i]->location->coordinate;
    $long = $coords->longitude;
    $lat = $coords->latitude;
}

Это должно сработать, насколько я могу судить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...