2014-10-22 2 views
0

Я имею структуру объекта, как это:как отобразить имена свойств объектов в массив

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

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

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

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

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

+0

Пытались ли вы что-нибудь ?? –

+0

Есть ли какая-то конкретная техническая причина, по которой вам это нужно? могут быть лучшие варианты или лучшие проекты для достижения вашей фактической бизнес-цели –

ответ

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', 
)