У меня есть файл 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);
?>
$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] =>
внутри него.