2009-10-15 99 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://devzone.zend.com/article/1235