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

0

Решение

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

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

2

Другие решения

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

$json = get_object_vars($json);

После этого вы можете получить к нему доступ следующим образом:

echo $json[6]->value;
1

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

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

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

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

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

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

0
По вопросам рекламы [email protected]