public static function searching(IContainer $aParent, $aCallback) { $arrRes = array(); foreach ($aParent->iterator() as $aChild) { if (call_user_func_array($aCallback, array($aChild))) { $arrRes[] = $aChild; } // 递归child $arrRes = array_merge($arrRes, self::searching($aChild, $aCallback)); } return $arrRes; }