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

时间:2014-07-31 07:46:24

标签: php function loops return

我很难解决这个问题,有什么帮助吗?

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

这仅在第一个循环中找到结果时才有效,如果函数再次调用自身,则不返回任何内容。但是,如果我回应结果,我看到我有一个匹配。

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();

2 个答案:

答案 0 :(得分:1)

您必须在函数中返回currentOffer()的结果。

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

答案 1 :(得分:0)

您需要返回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);

        }
    //}
}

再次拨打currentOffer时,您应该传入下一个广告系列,但是您可以获得它。