我有这个PHP代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$jsondata = curl_exec($ch);
if (curl_error($ch))
die("Connection Error: ".curl_errno($ch).' - '.curl_error($ch));
curl_close($ch);
$arr = json_decode($jsondata);
echo "\nResponse: ".htmlentities($jsondata)."\n\nArray: ".print_r($arr,true);
哪个输出:
Response: {"result":"success","clientid":83} Array:
stdClass Object ( [result] => success [clientid] => 83 )
我想获取存储在名为83
的变量中的值$clientid
。
但我无法弄明白该怎么做。
答案 0 :(得分:3)
您将PHP对象与PHP数组混淆。
你应该这样做:echo $arr->clientid;
示例1,访问像这样的对象的值:
<?php
$jsondata = '{"firstName":"John", "lastName":"Doe"}';
$arr = json_decode($jsondata);
echo gettype($arr);
echo $arr->firstName;
?>
打印:
object
John
示例2,访问数组的值,如下所示:
<?php
$yarr = array(5,6,7);
echo $yarr[0];
?>
打印:
5
答案 1 :(得分:1)
你的主要错误是假设json_decode返回一个数组。
$arr = json_decode($jsondata);
将$ arr设置为对象。如果要将其作为数组访问,可以执行以下操作:
$arr = json_decode($jsondata, TRUE);
末尾的额外参数告诉json_decode返回一个数组而不是一个对象。然后你可以这样做:
echo $arr["clientid"];
答案 2 :(得分:0)
尝试echo $arr["clientid"]
从数组中获取数据