递归函数:echo有效,return dos';t


Recursive function: echo works, return doesn't

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

问题是,该函数不返回任何内容,而它会响应预期结果。。。这是我的代码:

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
                }
        }
    }
}

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

在循环调用listArray之前需要一个return

谢谢。。

return;
break;

从未达到break(我认为无论如何都不能使用break退出php中的函数)

第二个return从递归调用返回。假设这不是两个独立的功能:

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

foon没有返回语句。

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

所以,再也没有return了。。。

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