php循环函数并将结果返回到原始调用

php循环函数并将结果返回到原始调用,php,function,loops,return,Php,Function,Loops,Return,我很难弄明白这一点,有什么帮助吗 我正在将一些数据传递到循环函数中,并希望将结果返回到原始调用 这只有在第一个循环中找到结果时才有效,如果函数再次调用自身,则不会返回任何结果。不过,如果我重复结果,我会发现我有一个匹配项 function fetchAllOffers () { /* do a bunch of things */ $result = currentOffer($campaign, $campaignsArray); // <-- return resu

我很难弄明白这一点,有什么帮助吗

我正在将一些数据传递到循环函数中,并希望将结果返回到原始调用

这只有在第一个循环中找到结果时才有效,如果函数再次调用自身,则不会返回任何结果。不过,如果我重复结果,我会发现我有一个匹配项

function fetchAllOffers () {

    /* do a bunch of things */

    $result = currentOffer($campaign, $campaignsArray); // <-- return result

    if ($result) {

        /* do more */

    }
}

function currentOffer ($step, $campaigns) {

    foreach ($campaigns as $c) {

        if (/* an exact match is found */) {

            return $c['id'];

        }

        elseif (/* half match move to next step */) {

            currentOffer($c, $campaigns);

        }
    }

    return $c['final']; // if no match found return

}
fetchAllOffers();
function-fetchAllOffers(){
/*做一大堆事情*/

$result=currentOffer($campaign,$campaignsArray);//您必须在函数中返回
currentOffer()
的结果

function currentOffer ($step, $campaigns)
{
    foreach ($campaigns as $c)
    {
        if (/* a match is found */)
            return $c['id'];
        else
            return currentOffer($c, $campaigns);
    }
}

您需要返回
currentOffer
。此外,您的循环在
currentOffer
中基本上是无用的,因为您反复调用
currentOffer
,直到它返回一个值。您所做的就是所谓的递归

function currentOffer ($step, $campaigns) {

    //foreach ($campaigns as $c) {

        if (/* a match is found */) {

            return $c['id'];

        }

        else {

            $nextc = <something> // get the campaign following c here
            return currentOffer($nextc, $campaigns);

        }
    //}
}
function currentOffer($step,$campetings){
//foreach($c){
如果(/*找到匹配项*/){
返回$c['id'];
}
否则{
$nextc=//在此处获取c之后的活动
return currentOffer($nextc,$campetings);
}
//}
}

另外,当再次致电
currentOffer
时,你应该在下一次活动中通过,不管你得到的是什么。

天才!!谢谢你,先生。我无法在那漫长的一个夜晚保持清醒。请看我的编辑,但谢谢你我一直在寻找回报