PHP stdClass Object, как получить элемент с индексом 0 [дубликат]


На этот вопрос уже есть ответ здесь:

У меня есть такой объект stdClass:

print_r($myobj);

stdClass Object(
[0] => testData
);
Таким образом, ясно, что я не могу получить значение по $myobj->0.

Для получения этого значения я преобразую объект в массив, но есть ли какие-либо способы получить без обращение?

2 4

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 >

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