Как выбрать значение из массива - PullRequest
0 голосов
/ 26 апреля 2020

Я получаю PHP массив отсюда Карты:

array(1) {
["Response"] => array(2) {
    ["MetaInfo"] => array(1) {
        ["Timestamp"] => string(28)
        "2020-04-26T17:28:14.089+0000"
    } ["View"] => array(1) {
        [0] => array(3) {
            ["_type"] => string(21)
            "SearchResultsViewType" ["ViewId"] => int(0)["Result"] => array(1) {
                [0] => array(5) {
                    ["Relevance"] => float(1)["MatchLevel"] => string(11)
                    "houseNumber" ["MatchQuality"] => array(4) {
                        ["Country"] => float(1)["City"] => float(1)["Street"] => array(1) {
                            [0] => float(0.9)
                        } ["HouseNumber"] => float(1)
                    } ["MatchType"] => string(12)
                    "pointAddress" ["Location"] => array(6) {
                        ["LocationId"] => string(28)
                        "NT_uIrE4zNUPdurm.zAQNkxHA_0A" ["LocationType"] => string(7)
                        "address" ["DisplayPosition"] => array(2) {
                            ["Latitude"] => float(52.14242)["Longitude"] => float(20.71666)
                        } ["NavigationPosition"] => array(1) {
                            [0] => array(2) {
                                ["Latitude"] => float(52.14251)["Longitude"] => float(20.71668)
                            }
                        } ["MapView"] => array(2) {
                            ["TopLeft"] => array(2) {
                                ["Latitude"] => float(52.1435442)["Longitude"] => float(20.7148282)
                            } ["BottomRight"] => array(2) {
                                ["Latitude"] => float(52.1412958)["Longitude"] => float(20.7184918)
                            }
                        } ["Address"] => array(10) {
                            ["Label"] => string(38)
                            "ulica Rynek 4, 05-840 Brwinów, Polska" ["Country"] => string(3)
                            "POL" ["State"] => string(16)
                            "Woj. Mazowieckie" ["County"] => string(18)
                            "Powiat Pruszkowski" ["City"] => string(8)
                            "Brwinów" ["District"] => string(8)
                            "Brwinów" ["Street"] => string(11)
                            "ulica Rynek" ["HouseNumber"] => string(1)
                            "4" ["PostalCode"] => string(6)
                            "05-840" ["AdditionalData"] => array(3) {
                                [0] => array(2) {
                                    ["value"] => string(6)
                                    "Polska" ["key"] => string(11)
                                    "CountryName"
                                } [1] => array(2) {
                                    ["value"] => string(16)
                                    "Woj. Mazowieckie" ["key"] => string(9)
                                    "StateName"
                                } [2] => array(2) {
                                    ["value"] => string(18)
                                    "Powiat Pruszkowski" ["key"] => string(10)
                                    "CountyName"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

}

Чтобы получить массив, вставленный выше, я использую:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$string = curl_setopt($ch, CURLOPT_URL, "https://geocoder.ls.hereapi.com/6.2/geocode.json?&street=Rynek%204&city=Brwin%C3%B3w%20&country=Poland&gen=9&apiKey=MY_API_KEY");

$result=curl_exec($ch);


curl_close($ch);

$decoded=var_dump(json_decode($result, true));

Я хотел бы получить Широта и Долгота из DisplayPosition . Как я могу это сделать?

Я пытался: var_dump ($ decoded [1] ["Response"] [0] ["View"] [0] ["Result"] [0] ["Location" ] ["DisplayPosition"] ["Latitude"]);

, но это не поможет. Я думаю, что все перепробовал ...

1 Ответ

1 голос
/ 26 апреля 2020

Вы не получите свой ответ в виде массива. Вы получаете как JSON. Насколько я понимаю, вы помещаете ответ в переменную, которую вы называете $string (основываясь на комментариях к @Sacha).

Вы хотите обработать это как массив, попробуйте выполнить:

//true makes the json string into an associative arrays which
//is often needed for json responses 
$array = json_decode($string, true); 

Когда вы это сделаете, попробуйте следующее:

<code>echo '<pre>';
print_r($array);
echo '
';

Я предполагаю, что это может быть что-то вроде этого:

$latitude = $array['Response']['View'][0]['Location']['DisplayPosition']['Latitude']
$longitudfe = $array['Response']['View'][0]['Location']['DisplayPosition']['Longitude']

Но, как упомянул @Sacha, вы должны проверить уровень значения для уровня, чтобы убедиться, что вы на правильном пути:

var_dump($array['Response']);
var_dump($array['Response']['View'];
var_dump($array['Response']['View'][0];

et c ...

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