как отобразить имена свойств объекта в массив

У меня есть структура объекта, как это:

$o = new stdClass();
$o->f1 = new stdClass();
$o->f2 = 2;

$o->f1->f12 = 5;
$o->f1->f13 = "hello world";

И я хотел бы получить массив всех «оставить свойства имя»:

$a = ["f2","f1f12", "f1f13"]

Есть ли простой способ сделать это?

0

Решение

function getObjectVarNames($object, $name = '')
{
$objectVars = get_object_vars($object);
$objectVarNames = array();
foreach ($objectVars as $key => $objectVar) {
if (is_object($objectVar)) {
$objectVarNames = array_merge($objectVarNames, getObjectVarNames($objectVar, $name . $key));
continue;
}
$objectVarNames[] = $name . $key;
}

return $objectVarNames;
}

$o = new stdClass();
$o->f1 = new stdClass();
$o->f2 = 2;
$o->f1->f12 = 5;
$o->f1->f13 = "hello world";

var_export(getObjectVarNames($o));

Результат:

array (
0 => 'f1f12',
1 => 'f1f13',
2 => 'f2',
)
0

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

Других решений пока нет …

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