2015-03-18 2 views
1

В pubnub Я загрузил данные как {"sensorval":{"zval":64}} в формате jsonstring.PHP Array в pubnub

Хотя retreiving сообщения он получает в качестве

Array([sensorval]=>Array([zval]=>62)) 

, но я хочу только zval и 62 быть извлечен и хранить в переменных. как сделать это?

Я хочу загрузить переменные zval и 62 в таблицы в локальной базе данных.

+0

В PubNub PHP, объекты JSON десериализуются как ассоциативные массивы PHP. Так, как предлагают предлагаемые ответы ниже, просто получите доступ к значению, как и любое вложенное значение в ассоциативном массиве. – Geremy

ответ

0
$arr = array("sensorval" => array("zval" => 62)); 
list($key, $value) = array(key($arr["sensorval"]), current($arr["sensorval"])); 

key извлечения ключа («Zval») и current получить значение текущего элемента (первый атм) в «sensorval».

[EDIT]

$json = '{"sensorval":{"xval":2}}'; 
$arr = json_decode($json,true); 
var_dump($arr); 
// prints array(1) { ["sensorval"]=> array(1) { ["xval"]=> int(2) } } 
$arr = json_decode($json,true); 
print_r($arr); 
//prints Array ([sensorval] => Array ([xval] => 2)) 

Что равно массив в моем примере.

Вы говорите мне, что вы получите данные, как это:

$pubnub->subscribe('che', function ($envelope) { 
    print_r($envelope['message']); 
    return true; 
}); 

Для запуска кода, как предложено, вы должны смотреть его, как это:

$pubnub->subscribe('che', function ($envelope) { 
    print_r($envelope['message']); 
    list($key, $value) = array(
     key($envelope['message']["sensorval"]), 
     current($envelope['message']["sensorval"]) 
    ); 
    printf("Key: %s, Value: %s", $key, $value); 
    return true; 
}); 
+0

Приведенный выше код работает для формата Array ("sensorval" => Array ("xval]" => 2)); Но мой клиент извлекает данные в следующем формате: Array ([sensorval] => Array ([xval] => 2)); – Kavya

+0

@kani В чем разница между двумя форматами? – msfoster

+0

Array ("sensorval" => Array ("xval]" => 2)); В этом формате я мог бы выполнить преобразование array2json с помощью функции. Он возвращает {"sensorval": {"xval": 2}} Это строка json. Но с массивом Array ([sensorval] => Array ([xval] => 2)) я не могу выполнить преобразование в json. Он возвращает ошибки. – Kavya