В контроллере 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, но он не работает.
+ sintakonte можешь привести мне пример ??
На линии под file_get_contents можно echo gettype($jsonData)? Не думаю, что это массив.
Привет, это было не в правильном формате JSON, поэтому я обновил api. Вы можете проверить обновленный код прямо сейчас.
Вы должны показать нам, что такое gettype() от $jsonData.
+ Томас Эдвардс gettype() из $jsonData возвращает объект
file_get_contents() возвращает строку, поэтому может сбивать с толку то, что вы получаете объект. Вы делаете что-то еще, чего нам не показываете?






Избегайте использования имен переменных, которые являются типом данных. То, что они содержат, более полезно. $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.
Используя это, вы затем можете использовать `foreach ($ footballers as $ footballer) {echo $ footballer-> id; }, чтобы вернуть идентификатор, но есть и другие проблемы, я задал вопрос по вашему сообщению.
Я решил свою проблему, вот мое решение: -
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. Таким образом Вы можете распечатать все значения.
используйте
json_decodeв своем циклеforeach- посмотрите @ php.net/manual/en/function.json-decode.php