Как извлечь из cURL с помощью PHP

У меня есть API, который дает мне результаты в этом формате:

{1 item
"items":[3 items
0:{12 items
"sugar_g":0
"fiber_g":0
"serving_size_g":396.893
"sodium_mg":246
"name":"prime rib"
"potassium_mg":720
"fat_saturated_g":43.7
"fat_total_g":107.7
"calories":1383.1
"cholesterol_mg":323
"protein_g":88.6
"carbohydrates_total_g":0
}
1:{12 items
"sugar_g":3.6
"fiber_g":2.3
"serving_size_g":100
"sodium_mg":587
"name":"pizza"
"potassium_mg":217
"fat_saturated_g":4.5
"fat_total_g":9.8
"calories":262.9
"cholesterol_mg":16
"protein_g":11.4
"carbohydrates_total_g":32.9
}
2:{12 items
"sugar_g":1.4
"fiber_g":1.5
"serving_size_g":100
"sodium_mg":329
"name":"mashed potatoes"
"potassium_mg":47
"fat_saturated_g":0.7
"fat_total_g":4.2
"calories":114
"cholesterol_mg":0
"protein_g":2
"carbohydrates_total_g":16.8
}
]
}

как я могу извлечь эти данные, чтобы хранить их в переменных?

я пробовал это, но дайте мне только один результат

$jsonDecoded = json_decode($response,true);
 foreach($jsonDecoded['items'] as $item){
   $sugar = $item['sugar_g'];
   $calories = $item['calories'];
   $name = $item['name'];
   $serving_size = $item['serving_size_g'];
 }

чего я пытаюсь достичь, так это то, что я могу извлечь все сахара, калории, имя и т. д.

Какой формат был до того, как вы его напечатали? Это был JSON? В любом случае, теперь, когда у вас есть объект, вам просто нужно loopitems, а затем получить доступ к дополнительной информации. что ты уже испробовал?

Andrea Olivato 04.04.2022 15:20

это похоже на JSON, но это не действительный JSON, это похоже на копию из инструментов разработчика или консоли, не так ли?

laloune 04.04.2022 15:22

Это код API: $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "calorieninjas.p.rapidapi.com/v1/…", CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, ]); $ответ = curl_exec($curl); $ ошибка = curl_error ($ завиток); curl_close ($ завиток); if ($err) { echo "Ошибка cURL #:" . $ошибка; } еще { эхо $ответ; }

vinzenz sekunde 04.04.2022 15:24

Да, похоже, что этот API возвращает JSON. Так что декодируйте его, а затем var_dump полученного объекта, если вы не уверены, с какой структурой имеете дело.

CBroe 04.04.2022 15:37

Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Community 04.04.2022 15:44
Стоит ли изучать 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
5
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

когда вы передаете true в функцию json_decode(), это будет массив, поэтому вам нужно получить доступ как к массиву, и есть несколько данных, поэтому вам нужен цикл.

 $jsonDecoded = json_decode($response,true);
 foreach(jsonDecoded['items'] as $item){
   echo $item['sugar_g'];
 }
 

я получил уведомление: неопределенный индекс: Sugar_g в строке

vinzenz sekunde 04.04.2022 16:13

Вам нужно прочитать все пункты?

Dilip Patel 04.04.2022 16:14

может быть 6-7 элементов, таких как имя, калории, углеводы, жиры, белки, сахар, serve_size_g

vinzenz sekunde 04.04.2022 16:18

отредактированный ответ, он должен работать

Dilip Patel 04.04.2022 16:24

как я могу получить доступ ко всем элементам??

vinzenz sekunde 04.04.2022 17:57

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

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

Wordpress WooCommerce - Слушайте, когда товар снова появится на складе (от 0 до 1) в PHP или скрипте
Предупреждение: fread() , fclose() ожидает, что параметр 1 будет ресурсом
Разбивка страницы продукта WooCommerce, показывающая дубликаты на всех страницах
Поведение PHP For-each/for — значение остается доступным после завершения Foreach
Установите только один вход (type=radio) как «требуемый» в цикле php foreach
Использование текстового поля ACF для отображения метатега на определенных страницах. Не удается заставить поле acf правильно возвращаться в functions.php
Как скрыть маленькую черточку в меню заголовка
Как проверить, является ли файл типом видео, типом изображения или типом документа в php
Попытка присвоить свойство не-объекта при обновлении существующей записи
Как вернуть в DOM строковую переменную из контроллера, содержащую тег html-изображения с функцией assets() в src?