2009-10-15 6 views
2

내가 다른 개체객체 PHP

$obj->sec_obj->some_var; 

나는 개체를 통해 루프에 foreach 루프를 사용하고자하는 모든 개체를 개체를 포함하는 PHP 개체가 포함 된 개체를 통해 반복. 최대 레벨은 3이라고 생각합니다.

$obj->sec_obj->third_obj->fourth_obj 

아이디어가 있으십니까?

답변

9

이것은 단지 기본적인 재귀입니다.

function loop($obj) 
{ 
    if (is_object($obj)) { 
     foreach ($obj as $x) { 
      loop($x); 
     } 
    } else { 
     // do something 
    } 
} 

편집 : 인쇄 키와 값 쌍 :

function loop($obj, $key = null) 
{ 
    if (is_object($obj)) { 
     foreach ($obj as $x => $value) { 
      loop($value, $x); 
     } 
    } else { 
     echo "Key: $key, value: $obj"; 
    } 
} 
0

체크 아웃 페이지 : http://www.php.net/manual/en/language.oop5.iterations.php

당신은 루프 foreach를 사용할 수 있지만 개체의 public 멤버, 당신 때문에 재귀 함수로 그렇게 할 수 있습니다.

좀 더 멋지기를 원한다면 Iterator를 사용할 수 있습니다.

0

재귀 함수를 사용하십시오. 전달 된 값이 찾고있는 값이 아닌 객체 인 경우 자체를 호출하는 함수입니다. 무한 루프에 빠지지 않도록 조심하십시오!

여기는 좋은 기사입니다.

http://devzone.zend.com/article/1235