递归函数:echo工作,返回没有

时间:2012-03-08 14:46:17

标签: php recursion return echo

该函数旨在查找一系列数组中的项目,然后返回其键。

问题是函数没有返回任何东西,而它会回应预期的结果...... 这是我的代码:

function listArray($tb, $target){
    foreach($tb as $key => $value){
        if(is_array($value)){ // current value is an array to explore
            $_SESSION['group'] = $key; // saving the key in case this array contains the searched item
            listArray($value, $target);
        }else {
            if ($target == $value) { // current value is the matching item
                return $_SESSION['group']; //Trying to return its key
                break; // I'd like to close foreach as I don't need it anymore
                }
        }
    }
}

顺便说一下,另一件小事:我不习惯递归函数,除了使用会话变量之外我没有找到任何其他解决方案。但是可能有更好的方法,因为我不在其他地方使用这个会话变量......

2 个答案:

答案 0 :(得分:2)

在定期return来电之前,您需要listArray

感谢它..

return;
break;

永远不会达到break(我不相信你可以使用break来退出php中的函数)

第二个return从递归调用返回。让我们说这不是两个独立的功能:

function foon() {
   barn();
}
function barn() {
   return true;
}

foon没有退货声明。

答案 1 :(得分:0)

我最终通过将结果存储在$_SESSION变量中来绕过问题。

所以,不再return ......

$_SESSION['item'][$target] = $_SESSION['group'];