获取stdClass对象值

时间:2015-02-14 20:14:18

标签: php arrays stdclass

我正试图从stdClass对象数组中获取值但没有成功。

这是我正在运行的代码:

 $myjson =
 '{"2":{"label":"","value":"","type":null,"validation":null,"required":null},
 "6":{"label":"files","value":"getThisValue","type":"file0","validation":null,"required":null},
 "3":{"label":"location","value":"val3","type":"hidden","validation":"","required":"0"}
 ,"0":{"custom3":"zz","value":"","label":""},"1":{"custom3":"zz","value":"","label":""}
 }';

$json = json_decode($myjson);

echo $json[6]->'value';

这不起作用,如果我Print_r解码(print_r($json))后的JSON,那么数组将如下所示:

stdClass Object ( 
    [2] => stdClass Object ( [label] => [value] =>
[type] => [validation] => [required] => ) 
    [6] => stdClass Object (
[label] => files [value] => getThisValue [type] => file0 [validation]
=> [required] => ) 
    [3] => stdClass Object ( [label] => location [value] => val3 [type] => hidden [validation] => [required] => 0 ) 
    [0]
=> stdClass Object ( [custom3] => zz [value] => [label] => ) 
    [1] => stdClass Object ( [custom3] => zz [value] => [label] => ) )

我需要价值:getThisValue。知道我怎么能得到它吗? (我尝试了许多选项但没有成功)。

4 个答案:

答案 0 :(得分:2)

试试echo $json["6"]["value"]; 但为此,您必须使用json_decode($myjson, true); true来获取数组。

因为它将是彼此内部的数组而不是对象,所以你必须使用2个括号。

答案 1 :(得分:1)

您可以将true添加到json_decode,如下所示:json_decode($myjson, true);,它现在会将您的json对象转换为关联数组。

从那里开始,您可以通过请求密钥获得所需的值,就像其他阵列一样。

$newArray = json_decode($myjson, true);
echo $newArray['something'];

答案 2 :(得分:1)

您不能将std对象用作数组。但是为了使代码正常工作,只需添加以下行:

$json = get_object_vars($json);

在此之后你可以像这样访问它:

echo $json[6]->value;

答案 3 :(得分:0)

如果要从stdObject获取值而不将其转换为数组,可以这样做:

echo $json->{'6'}->value

您可以使用{'property_name'}表示法获取具有非标准名称的类属性的值(例如,数字)。