Как объявить переменную из cURL PHP

У меня есть файл cURL, который вернет массив, как показано ниже, и мне интересно, как я могу объявить переменную [data] => [id]. Я пробовал как $decoded.data или $decoded.[data], но это не работает .

Array
(
    [data] => Array
        (
            [id] => 2
            [email] => [email protected]
            [first_name] => Janet
            [last_name] => Weaver
            [avatar] => https://reqres.in/img/faces/2-image.jpg
        )

    [support] => Array
        (
            [url] => https://reqres.in/#support-heading
            [text] => To keep ReqRes free, contributions towards server costs are appreciated!
        )

)

PHP-файл:

<?php
  $ch = curl_init();
  $url = "https://reqres.in/api/users/2";
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $resp = curl_exec($ch);
  $decoded = json_decode($resp,true);
  print_r($decoded);
  curl_close($ch);
?>
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
0
28
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
$decoded['data']
$decoded['data']['id']

это синтаксис. Но конечная точка должна вернуть массив, который вы напечатали с помощью json_encode().

I have an cURL file that will return an array like below

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

  $ch = curl_init();
  $url = "https://reqres.in/api/users/2";
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $resp = curl_exec($ch);
  curl_close($ch); // you can call this straight away, you're done with $ch

Это использует библиотеку под названием «curl» для выполнения HTTP-запроса и получает тело ответа. Значение в $resp — это строка, а не файл, и не что-то завитое и даже не специфичное для HTTP, а просто строка.

$decoded = json_decode($resp,true);

Это берет строку и анализирует ее в соответствии с форматом, называемым JSON. Установка для второго параметра значения true говорит о том, что вам нужны массивы PHP, а не смесь массивов и stdClass объектов. Предполагая, что ошибок нет, $decoded теперь является массивом; не массив JSON, а обычный массив PHP.

print_r($decoded);

Это то, что дает результат, который вы указали в вопросе. Важно понимать, что это не "массив", это просто способ показать это. Другие способы включают var_dump($decoded); и var_export($decoded);.


Итак, давайте перефразируем ваше первое предложение:

I have a PHP array, which looks like this when displayed with print_r. (It's based on a JSON response I fetched using curl, but that's not really relevant right now.)


Теперь по вашему вопросу:

how can I declare the variable of [data]=>[id]?

Я думаю, что вы пытаетесь сказать, как мне забратьценность, показанный в «[данные] => [id]». (Поверьте мне, знакомство с правильной терминологией значительно облегчит вашу жизнь, когда вы будете искать и обращаться за помощью в будущем.)

А ответ прост: в PHP доступ к элементам массива осуществляется с помощью синтаксиса $array['key']. Таким образом, $decoded['data'] обращается ко всему, что показано в [data] =>, в выводе print_r, а $decoded['data']['id'] обращается к содержимому [id] => внутри него.

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