Как получить доступ к объекту stdclass внутри объекта stdclass в codeigniter

В контроллере Cron я написал следующую функцию: -

public function football() {
        $jsonData = file_get_contents('http://localhost/football/football/api/football_api.php');        

    }

$jsonData is returning the following object:-



    stdClass Object
(
    [callum-paterson] => stdClass Object
        (
            [id] => 1
            [unique_id] => callum-paterson
            [name] => Callum Paterson
            [club] => Cardiff City
            [position] => Defender
            [national_team_name] => Unknown
            [birthdate] => 1994-10-13
            [birthplace] => Unknown
            [nationality] => Unknown
            [preferred_foot] => Unknown
            [weight] => 76
            [height] => 183
            [shirt_number] => 13
            [real_position] => Full Back
            [real_position_side] => Right
            [country] => Scotland
            [photo_url] => https://img.footballindex.co.uk/callum-paterson-g-t1.jpg
        )

    [chicharito] => stdClass Object
        (
            [id] => 3
            [unique_id] => chicharito
            [name] => Chicharito
            [club] => West Ham United
            [position] => Forward
            [national_team_name] => Unknown
            [birthdate] => 1988-06-01
            [birthplace] => Guadalajara
            [nationality] => Mexico
            [preferred_foot] => Right
            [weight] => 73
            [height] => 175
            [shirt_number] => 17
            [real_position] => Striker
            [real_position_side] => Centre
            [country] => Mexico
            [photo_url] => https://img.footballindex.co.uk/javier-hernandez-g-t6.jpg
        )

$ jsonData возвращает 1064 записи. Здесь я показываю несколько. поэтому я хочу распечатать все записи (например, id, unique_id, name и т. д.) внутри stdclass-object_index (например, [callum-paterson]).

Я новичок в JSON. Так что я не могу этого сделать. Любая помощь будет оценена по достоинству. Я пробовал использовать foreach, но он не работает.

используйте json_decode в своем цикле foreach - посмотрите @ php.net/manual/en/function.json-decode.php

sintakonte 05.12.2018 12:20

+ sintakonte можешь привести мне пример ??

Alek Stephanok 05.12.2018 12:25

На линии под file_get_contents можно echo gettype($jsonData)? Не думаю, что это массив.

Zoe Edwards 05.12.2018 12:43

Привет, это было не в правильном формате JSON, поэтому я обновил api. Вы можете проверить обновленный код прямо сейчас.

Alek Stephanok 05.12.2018 12:54

Вы должны показать нам, что такое gettype() от $jsonData.

Zoe Edwards 05.12.2018 13:00

+ Томас Эдвардс gettype() из $jsonData возвращает объект

Alek Stephanok 05.12.2018 13:45
file_get_contents() возвращает строку, поэтому может сбивать с толку то, что вы получаете объект. Вы делаете что-то еще, чего нам не показываете?
Zoe Edwards 05.12.2018 14:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
192
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Избегайте использования имен переменных, которые являются типом данных. То, что они содержат, более полезно. $data приемлем, когда переменная еще не полезна.

public function football() {
    $footballers = file_get_contents('http://localhost/football/football/api/football_api.php');

    foreach ($footballers as $footballer => $data) {
        $footballers[$footballer] = json_decode($data);
    }

    return $footballers;
}
$footballers возвращает Array ( [callum-paterson] => { "id": "1", "unique_id": "callum-paterson", "name": "Callum Paterson", "club": "Cardiff City", "position": "Defender", "national_team_name": "Unknown", "birthdate": "1994-10-13", "birthplace": "Unknown", "nationality": "Unknown", "preferred_foot": "Unknown", "weight": "76", "height": "183", "shirt_number": "13", "real_position": "Full Back", "real_position_side": "Right", "country": "Scotland", "photo_url": "https://img.footballindex.co.uk/callum-paterson-g-t1.jpg‌​" }, чего не ожидалось. Мне нужно значение я бы, равное 1.
Alek Stephanok 05.12.2018 12:39

Используя это, вы затем можете использовать `foreach ($ footballers as $ footballer) {echo $ footballer-> id; }, чтобы вернуть идентификатор, но есть и другие проблемы, я задал вопрос по вашему сообщению.

Zoe Edwards 05.12.2018 12:44
Ответ принят как подходящий

Я решил свою проблему, вот мое решение: -

public function football() {
        header('Content-Type: application/json');
        $tmp = array();
        $footballers = json_decode(file_get_contents('http://localhost/football/football/api/football_api.php'));

        foreach ($footballers as $footballer => $data) {
            $tmp[] = $data->unique_id;
        }
        print_r($tmp);

    }

$ tmp содержит все unique_ids. Таким образом Вы можете распечатать все значения.

Другие вопросы по теме