как получить доступ к объекту stdclass внутри объекта stdclass в codeigniter - PullRequest
0 голосов
/ 05 декабря 2018

В контроллере 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, но он не работает.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

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

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.Таким образом, вы можете распечатать все значения.

0 голосов
/ 05 декабря 2018

Избегайте использования имен переменных, которые являются типом данных.То, что они содержат, более полезно.$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;
}
...