PHP从数组中获取值

时间:2013-12-25 07:40:36

标签: php json curl html-entities whmcs

我有这个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

但我无法弄明白该怎么做。

3 个答案:

答案 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"]从数组中获取数据