2014-10-22 212 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

你嘗試過什麼? – 2014-10-22 11:25:06

+0

有什麼特定的技術原因,你爲什麼需要這個?可能有更好的選擇,或更好的設計來實現您的實際業務目標 – 2014-10-22 11:30:05

回答

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', 
) 
相關問題