@Dimas123

Как получить значение объекта?

Простой вопрос по синтаксису. Есть объекты $ob, если сделать print_r($ob) , то выводится:

stdClass Object ( [XXXXX] => stdClass Object ( [id] => 111111 [name] => XXXXX  ) )


Мне нужно получить значение name и id, если знать, что там "XXXXX", то я знаю как получить

$name = $ob->XXXXX->name;
$id = $ob->XXXXX->id;


Но если ХХХХХ постоянно меняется, как получать $name и $id?
  • Вопрос задан
  • 12570 просмотров
Решения вопроса 1
@Dimas123 Автор вопроса
В общем из комментариев @hlogeon стало понятно, что объект можно перевести в массив

$objArr = (array)$ob;

foreach ($objArr as $key => $value){
	$name = $value->name;
	$id = $value->id;
}
echo "$name";
echo "$id";


Всё получилось, спасибо.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Получить список публичных свойств объекта можно так:
$foo = new Foo();

$reflect = new ReflectionClass($foo);
$props   = $reflect->getProperties(ReflectionProperty::IS_PUBLIC);

Если в вашем объекте верхнего уровня(который содержиьт объект XXXX) содержатся только объекты, от которых вам надо будет получить свойства, можно провернуть нечто вроде:

$names = array();
$ids = array();
foreach($props as $property){
    $propName = $property->getName();
    $names[] = $object->$propName->name;
    $ids[] = $object->$propName->id;
}


Или как то так. Я надеюсь, общая мысль ясна и я правильно понял вопрос
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы