在 PHP 中获取 stdClass 对象的名称
Getting the name of a stdClass object in PHP
我正在玩一个 API,它以 JSON 格式返回数据,然后我 json_decode()
为以下格式:
[stockData] => stdClass Object
(
[data] => stdClass Object
(
[PS3] => stdClass Object
(
[2015-01-26T20:45:01Z] => stdClass Object
(
[AMU] => 999.76
[ZIT] => 3.63
)
)
)
[status] => stdClass Object
(
[code] => 200
[text] => ok
)
)
我需要一些方法来获取 2015-01-26T20:45:01Z
(它一直在变化)。
我已经尝试 get_Class()
对象,例如:
get_Class($bawsaq->stockData->data->PS3)
(实际上是在一个foreach
循环中)
但返回的只是:"stdClass" 而不是名称。如何获取对象的名称?
你可以使用get_object_vars方法。
$obj = new stdClass();
$obj->field1 = 'value1';
print_r(get_object_vars($obj));
结果:
Array
(
[field1] => value1
)
解码 JSON 时,使用
$bawsaq = json_decode($json, true);
这将 return 关联数组,而不是所有 JSON 对象的 stdClass
对象。然后你可以使用
$keys = array_keys($bawsaq['stockData']['data'];
$date = $keys[0];
它实际上不是对象的 class:它是包含 stdClass
对象的 属性 的名称。因此,您需要从 $bawsaq->stockData->data->PS3
获取第一个对象 属性 的名称。实际上,这有点棘手。
使用数组更好。如果使用json_decode
的$assoc
参数,只要出现JSON对象,就可以获得关联数组而不是对象。这在 PHP.
中更容易处理
$bawsaq = json_decode($jsonData, true);
你可以通过key
获取键名:
$dateTime = key($bawsaq['stockData']['data']['PS3']);
您可以使用 json_decode
的第二个参数。这会将 return 数据作为关联数组而不是对象列表,因此您可以简单地使用
$input = json_decode($jsonInput, true);
$key = key($input['stockData']['data']['PS3']);
$data = $input['stockData']['data']['PS3'][$key];
或 foreach 循环。另见 key
关于 php.net。
我正在玩一个 API,它以 JSON 格式返回数据,然后我 json_decode()
为以下格式:
[stockData] => stdClass Object
(
[data] => stdClass Object
(
[PS3] => stdClass Object
(
[2015-01-26T20:45:01Z] => stdClass Object
(
[AMU] => 999.76
[ZIT] => 3.63
)
)
)
[status] => stdClass Object
(
[code] => 200
[text] => ok
)
)
我需要一些方法来获取 2015-01-26T20:45:01Z
(它一直在变化)。
我已经尝试 get_Class()
对象,例如:
get_Class($bawsaq->stockData->data->PS3)
(实际上是在一个foreach
循环中)
但返回的只是:"stdClass" 而不是名称。如何获取对象的名称?
你可以使用get_object_vars方法。
$obj = new stdClass();
$obj->field1 = 'value1';
print_r(get_object_vars($obj));
结果:
Array
(
[field1] => value1
)
解码 JSON 时,使用
$bawsaq = json_decode($json, true);
这将 return 关联数组,而不是所有 JSON 对象的 stdClass
对象。然后你可以使用
$keys = array_keys($bawsaq['stockData']['data'];
$date = $keys[0];
它实际上不是对象的 class:它是包含 stdClass
对象的 属性 的名称。因此,您需要从 $bawsaq->stockData->data->PS3
获取第一个对象 属性 的名称。实际上,这有点棘手。
使用数组更好。如果使用json_decode
的$assoc
参数,只要出现JSON对象,就可以获得关联数组而不是对象。这在 PHP.
$bawsaq = json_decode($jsonData, true);
你可以通过key
获取键名:
$dateTime = key($bawsaq['stockData']['data']['PS3']);
您可以使用 json_decode
的第二个参数。这会将 return 数据作为关联数组而不是对象列表,因此您可以简单地使用
$input = json_decode($jsonInput, true);
$key = key($input['stockData']['data']['PS3']);
$data = $input['stockData']['data']['PS3'][$key];
或 foreach 循环。另见 key
关于 php.net。