我很难解决这个问题,有什么帮助吗?
我将一些数据传递给循环函数,并希望将结果返回到原始调用。
这仅在第一个循环中找到结果时才有效,如果函数再次调用自身,则不返回任何内容。但是,如果我回应结果,我看到我有一个匹配。
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();
答案 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
时,您应该传入下一个广告系列,但是您可以获得它。