2013-12-25 3 views
0

У меня есть этот PHP код: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

Вы путаете РНР объект массива 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 
+0

Работал! Большое вам спасибо :) – Albab

+0

Рад помочь вам .. :-) – phpsmashcode

0

пытаются echo $arr["clientid"] получить данные из массива

+0

дает ошибку ~ PHP Фатальная ошибка: Не удается использовать объект типа StdClass как массив – Albab

+0

My плохо, видел «массив» на своем выходе. – Orifjon

+0

Это будет работать с '$ arr = json_decode ($ jsondata, TRUE);' – JakeGould

1

Ваша главная ошибка в предположении json_decode возвращает массив.

$arr = json_decode($jsondata); 

Будут установлены $ arr как объект. Если вы хотите получить доступ к его как массив, вы можете сделать это:

$arr = json_decode($jsondata, TRUE); 

Дополнительный параметр на конце говорит json_decode возвращать массив вместо объекта. Тогда вы могли бы сделать:

echo $arr["clientid"];