2014-10-22 4 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', 
)