我有一个包含嵌套对象等的对象。嵌套的级别可以假定为无限的。递归嵌套对象
如果对象嵌套其他对象,则应将子元素存储在名为childElements
的数组属性中。
我与工作看起来像这样的对象:
Object
childElements
['object1'] => object
childElements
['object11'] => object
['object2'] => object
我想获得该对象的引用使用递归称为object11
。这是我正在使用的功能。该功能属于一类,因此调用递归时$this
使用:
public function recursiveSearch(array $childElements, $elementName){
foreach ($childElements as $key => $element) {
var_dump($key);
if (isset($element->childElements)){
return $this->recursiveSearch($element->childElements, $elementName);
}else{
if ($key == $elementName){
return $childElements[$elementName];
}
}
}
throw new Exception("$elementName could not be found.");
}
然后我打电话给我的函数像这样(假设对象被称为$r
):
return $this->recursiveSearch($r->childElements, 'object11');
的问题,我代码(当查看var dumps时,函数将继续向最内层对象行进,但一旦完成,它将终止,而不管它是否访问过任何其他childElements
。我认为问题是由于return $this->recursiveSearch
过早返回
如何构建我的递归函数以使其正常工作?
工作完美:) – F21 2012-01-18 02:05:25