1

好的,所以我在 JSON 数组中有这个(retrieveData()的输出)

{
    "device": {
        "01AA02AB141208VV": {
            "$version": -148598935,
            "$timestamp": 1344382016000,
            "serial_number": "01AA02AB141208VV"
        }
    }
}

但是,我似乎无法选择序列号。我已经尝试过通常有效的方法,但我无法选择它。这是假设我们还不知道“01AA02AB141208VV”。

$retrieved_data = retrieveData($array['userid'], $array['urls']['transport_url'], $array['access_token']);
$retrieved_data_array = json_decode($retrieved_data, true);
$serial_number = $retrieved_data_array['device'][0]['serial_number'];

难道我做错了什么?我敢打赌这真的很简单,但我就是想不通!

谢谢!

4

3 回答 3

4

不幸的是,这并不简单。当您不知道 Main St. 所在的城市时,您正试图找到 42 Main St.。找到它的唯一方法serial_number是循环$retrieved_data_arrayforeach直到找到您想要的值。

于 2012-08-08T00:08:08.693 回答
3

您可以使用 key() 函数访问关联数组的键(在本例中为 '$retrived_data_array['device']' 数组:

<?php

$data = '{"device": {"01AA02AB141208VV": {"$version": -148598935,"$timestamp": 1344382016000,"serial_number": "01AA02AB141208VV"}}}';

$retrieved_data_array = json_decode($data, true);
$serial_number = key($retrieved_data_array['device']);
reset($retrieved_data_array['device']);

print_r($serial_number);
print_r($retrieved_data_array['device'][$serial_number]);

?>
于 2012-08-08T00:31:03.363 回答
1

假设您在设备数组中有多个项目,这将获取序列号:

$keys = array();

foreach( $retrieved_data_array['device'] as $key => $val ){
  $keys[] = $key;
}

$serial = $keys[0];

如果您知道数组中只有一项,则可以减少这种情况...

于 2012-08-08T00:22:36.217 回答