在PHP中获取stdClass对象的名称

Chu*_*utt 3 php object

我正在使用一个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
            )

    )
Run Code Online (Sandbox Code Playgroud)

我需要一些方法来获取2015-01-26T20:45:01Z(这一直在变化).

我试过get_Class()这个对象,例如:

get_Class($bawsaq->stockData->data->PS3)(实际上在一个foreach循环中)

但所有返回的是:"stdClass"而不是名称.我怎样才能得到对象的名字?

lon*_*day 6

它实际上不是对象的类:它是包含stdClass对象的属性的名称.所以你需要从中获取第一个对象属性名称$bawsaq->stockData->data->PS3.实际上,这有点棘手.

使用数组更好.如果使用$assoc参数of json_decode,则只要出现JSON对象,就可以获得关联数组而不是对象.这在PHP中更容易处理.

$bawsaq = json_decode($jsonData, true);
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式获取密钥名称key:

$dateTime = key($bawsaq['stockData']['data']['PS3']);
Run Code Online (Sandbox Code Playgroud)


Bar*_*mar 5

解码 JSON 时,请使用

$bawsaq = json_decode($json, true);
Run Code Online (Sandbox Code Playgroud)

这将返回关联数组而不是stdClass所有 JSON 对象的对象。然后你可以使用

$keys = array_keys($bawsaq['stockData']['data'];
$date = $keys[0];
Run Code Online (Sandbox Code Playgroud)