使用PHP从API响应访问值时遇到问题
我正在使用PHP 我正在尝试从API回显信息,该API有如下响应:使用PHP从API响应访问值时遇到问题,php,Php,我正在使用PHP 我正在尝试从API回显信息,该API有如下响应: {"id":1111, "library":[{"id":222,"name":"Test"},{"id":444, "name":"Test4"}], "advertiser":{"id":333,"name"
{"id":1111, "library":[{"id":222,"name":"Test"},{"id":444, "name":"Test4"}], "advertiser":{"id":333,"name":"Test2"}}
我将其存储在$api\u response\u数组中
要获取“id”值(1111),我使用:
要获取库ID值,我使用:
foreach($api_response_array['library'] as $key=>$value {
echo $value['id'];
}
但是,我不确定从响应的广告客户部分获取id值的语法是否正确。我注意到它是用大括号括起来的,而不是方括号,这说明它不是数组。但当我尝试将其作为对象引用时,会出现一个错误:
Code: $api_response_array['advertiser']->id
Error: Trying to get property 'id' of non-object
有人能帮我用正确的语法来访问这个值吗?谢谢 如果你转储你的数组,那么你会发现“库”和“广告商”是不同的 以下是阵列的工作方式:
array(3) {
["id"]=>
int(1111)
["library"]=>
array(2) {
[0]=>
array(2) {
["id"]=>
int(222)
["name"]=>
string(4) "Test"
}
[1]=>
array(2) {
["id"]=>
int(444)
["name"]=>
string(5) "Test4"
}
}
["advertiser"]=>
array(2) {
["id"]=>
int(333)
["name"]=>
string(5) "Test2"
}
}
要使其工作,请尝试以下操作:
$response = '{"id":1111, "library":[{"id":222,"name":"Test"},{"id":444, "name":"Test4"}], "advertiser":{"id":333,"name":"Test2"}}';
$array = json_decode($response, 1);
// Dump all to see what you have and how to process it like:
var_dump($array);
// Then you can get each value like:
echo $array['id'];
echo $array['library'][0]['id'];
echo $array['library'][0]['name'];
echo $array['library'][1]['id'];
echo $array['library'][1]['name'];
echo $array['advertiser']['id'];
echo $array['advertiser']['name'];
您是否使用第二个参数对json进行了解码?也许可以尝试
$api\u response\u array['advertiser']['id']
。是的,很抱歉,json响应存储在$api\u response\u json中,然后我使用json解码($api\u response\u json,true)并将此信息存储在$api\u response\u array中。您提供的语法非常有效!我可以得到id值。我没意识到它如此简单,只需敲打两个方括号值。谢谢你的帮助!请随意提交我可以接受的答案。第二个参数为true,只将整个JSON字符串解码为数组,而不必费心将JSON对象转换为基本的PHP stdClass对象。这意味着您只需像访问任何其他PHP数组一样访问它们。
$response = '{"id":1111, "library":[{"id":222,"name":"Test"},{"id":444, "name":"Test4"}], "advertiser":{"id":333,"name":"Test2"}}';
$array = json_decode($response, 1);
// Dump all to see what you have and how to process it like:
var_dump($array);
// Then you can get each value like:
echo $array['id'];
echo $array['library'][0]['id'];
echo $array['library'][0]['name'];
echo $array['library'][1]['id'];
echo $array['library'][1]['name'];
echo $array['advertiser']['id'];
echo $array['advertiser']['name'];