2015-02-14 3 views
0

Я пытаюсь получить значение от 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 в JSON после декодирования (print_r($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. Любая идея, как я могу это получить? (Я пробовал много вариантов без успеха).

ответ

2

Попробуйте echo $json["6"]["value"]; Но для этого вы должны использовать json_decode($myjson, true); правда, к получить массив.

Потому что он собирается быть массивами внутри друг друга, а не объектом, вам нужно использовать 2 скобки.

+0

Спасибо .. это ответ;) –

+0

Нет проблемы с моим другом. –

2

Вы можете добавить true в ваш json_decode, вот так: json_decode($myjson, true);, теперь он преобразует ваш объект json в ассоциативный массив.

И оттуда вы можете получить нужное значение, запросив ключ, как и другие массивы.

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

Отлично! Спасибо! –

1

Вы не можете использовать std-объект в качестве массива. Но для того, чтобы получить код работает только добавить эту строку:

$json = get_object_vars($json); 

После этого вы можете получить доступ к нему, как это:

echo $json[6]->value; 
+0

хорошая идея, я нашел решение, спасибо в любом случае! –

0

Если вы хотите, чтобы получить значения из stdObject без преобразования его в массив, вы можете сделать это следующим образом:

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

Вы можете использовать {'property_name'} обозначения, чтобы получить значение класса с не- стандартное имя (например, номер).

Смежные вопросы