我使用 cURL 連接到 api 并接收 JSON 回應。由于 PHP 錯誤,無法使用 PHP 決議資料:“嘗試訪問 int 型別值的陣列偏移量”
我已使用json_decode()但仍收到錯誤。我還嘗試通過將第二個引數設定為“true”和“false”來解碼為陣列和物件。我已經使用gettype()并收到了NULL回復。我正在使用 PHP 7.4.3,但我相信這適用于舊版本的 PHP。在這些較新版本中,我們如何將 JSON 決議為 PHP 物件或陣列?
這是從 api 回傳的 JSON:
{"count":8,"next":"https://pokeapi.co/api/v2/generation/?offset=2&limit=2","previous":null,"results":[{"name":"generation-i","url":"https://pokeapi.co/api/v2/generation/1/"},{"name":"generation-ii","url":"https://pokeapi.co/api/v2/generation/2/"}]}
這是我的PHP:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://pokeapi.co/api/v2/generation/?limit=2');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$output = curl_exec($ch);
curl_close($ch);
$decoded = json_decode($output, false);
echo $decoded->count;
// i've also tried:
// $decoded = json_decode($output, true);
// echo $decoded['count']
// as well as $decoded = json_decode($output);```
uj5u.com熱心網友回復:
您必須指定 curlCURLOPT_RETURNTRANSFER以便它可以將值作為字串回傳
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://pokeapi.co/api/v2/generation/?limit=2',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$output = curl_exec($curl);
curl_close($curl);
$decoded = json_decode($output);
echo $decoded->count;
?>
這里有更多可以幫助你的選項 https://www.php.net/manual/en/function.curl-setopt.php
uj5u.com熱心網友回復:
請注意json_decode解碼一個 JSONstring
所以使用 json_decode 來解碼 json 字串,它應該可以作業:
<?php
$output='{"count":8,"next":"https://pokeapi.co/api/v2/generation/?offset=2&limit=2","previous":null,"results":[{"name":"generation-i","url":"https://pokeapi.co/api/v2/generation/1/"},{"name":"generation-ii","url":"https://pokeapi.co/api/v2/generation/2/"}]}';
$decoded = json_decode($output, false);
echo "Count is " . $decoded->count;
echo "<br>";
echo "1st name is " . $decoded->results[0]->name;
echo "<br>";
echo "2nd name is " . $decoded->results[1]->name;
echo "<br>";
?>
檢查此沙箱(嘗試:- PHP 7.4.32 有效)
https://onlinephp.io/c/a48d3
附加資訊
對于您的情況,您可以簡單地使用 file_get_contents 來替換 curl:
<?php
$url="https://pokeapi.co/api/v2/generation/?limit=2";
$output = file_get_contents($url, true);
?>
<?php
$decoded = json_decode($output, false);
echo "Count is " . $decoded->count;
echo "<br>";
echo "1st name is " . $decoded->results[0]->name;
echo "<br>";
echo "2nd name is " . $decoded->results[1]->name;
echo "<br>";
?>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/515391.html
標籤:phpjsonapi卷曲
