Задать вопрос
Cheizer
@Cheizer

Как из JSON массива правильно получить id?

Приветствую друзья, объясните мне пожалуйста, уже совсем не понимаю в чем дело.

Есть API одного сервиса, из него получаю JSON массив в строке.
Из URL 1 легко все получаю.
Вот массив:

Array
(
    [0] => Array
        (
            [id] => 42
            [region_id] => 42
            [country_id] => 10
            [name] => Ахен
        )


В цикле вывожу echo $value['id'] и порядок, на странице выводиться 42

А вот второй массив URL 2

Array
(
    [id] => 1
    [url] => https://www.sputnik8.com/ru/st-petersburg?ref=2943
    [slug] => st-petersburg
    [name] => Санкт-Петербург
    [name_in_case] => в Санкт-Петербурге
    [products] => 3164
    [providers] => 1615
    [coordinates] => Array
        (
            [lat] => 
            [lng] => 
        )
    [geo] => Array
        (
            [country] => Array
                (
                    [id] => 1
                    [name] => Россия
                )
            [region] => Array
                (
                    [id] => 1
                    [name] => Санкт-Петербург
                )
            [description] => Array
                (
                    [image] => https://7d9e88a8-f178-4098-bea5-48d960920605.selcdn.net/d8ef0664-85d0-4186-8f00-4e938aff2248/
                )
        )
)


И если я в цикле вывожу echo $value['id'], на странице выводиться какая то хрень буква h
Не понимаю в чем дело, подскажите пожалуйста что не так со вторым массивом????

api_key общедоступный, можно использовать любому.
Помогите пожалуйста новичку в php разобраться, почему из второго массива вместо id цифр какая то ерунда выводиться???
  • Вопрос задан
  • 197 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
У вас там как-бы разная структура массивов. В первом случае у вас массив верхнего уровня содержит исключительно массивы (т.е. список), поэтому ваш foreach отрабатывает корректно. Во втором случае, массив содержит элементы других типов данных, кроме массива (числа и строки). В это случае вам не нужно перебирать $matches в цикле, а можете сразу обращаться к элементам массива через $matches['id'], $matches['geo']['country'] и т.д.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
--foreach ($matches as $key => $value) {
--    echo $value['id'].'<br>';
--}
++printf('%d<br>', $matches['id']);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы