PHP stdClass Object, как получить элемент с индексом 0 [дубликат]
На этот вопрос уже есть ответ здесь:
У меня есть такой объект stdClass:
print_r($myobj);
stdClass Object(
[0] => testData
);
Таким образом, ясно, что я не могу получить значение по $myobj->0
.
Для получения этого значения я преобразую объект в массив, но есть ли какие-либо способы получить без обращение?
2 ответа:
Попробуйте это:
$obj = new stdClass(); $obj->{0} = 1; echo $obj->{0};
Источник: http://php.net/manual/en/language.types.object.php
Таким образом, во-первых, даже если из вывода
print_r()
следует, что свойство является буквально целочисленным0
, это не так. Если вы вызоветеvar_dump()
на объекте вместо этого, вы увидите, что на самом деле это выглядит так:php > var_dump($myobject); object(stdClass)#2 (1) { ["0"]=> string(4) "testData" }
Итак, как вы получаете доступ к свойству с именем
0
, когда PHP не позволяет вам получить доступ к$myobject->0
? Используйте специальный сложный (фигурный) синтаксис :php > echo $myobject->{0}; test php > echo $myobject->{'0'}; test php >
Этот метод можно использовать для доступа к именам свойств, которые не считаются допустимым синтаксисом.