获取循环中函数的整体返回值

时间:2009-12-24 16:59:07

标签: php return-value

我正在做的是循环数组并在数组的每个值上运行一个函数(该函数在成功时返回true,在出错时返回false)。如果循环中的任何调用返回false,我想返回false,但我希望处理整个循环。

可能更容易用代码解释:

foreach($this->_cacheLocations as $cacheId)
{
    $this->deleteCache($cacheId);
}

return true/false depending on whether anything failed above;

如果可能的话,我宁愿不引入变量来跟踪任何谬误。例如,我不想做以下事情:

$result = true;
foreach($this->_cacheLocations as $cacheId)
{
    $_result = $this->deleteCache($cacheId);
    if(!$_result) $result = false;
}

return $result;

有没有一种奇特的方法可以做到这一点,还是我应该采取第二种方式?

2 个答案:

答案 0 :(得分:3)

我会使用变量,就像你在第二部分代码中所做的那样 - 至少,这就是我在那种情况下所做的事情。


如果要删除一个临时变量,可以使用:

$result = true;
foreach($this->_cacheLocations as $cacheId)
{
        if (!$this->deleteCache($cacheId)) {
            $result = false;
        }
}
return $result;

但这个想法与你发布的内容一样。

答案 1 :(得分:2)

为了跟踪多个返回结果,您很遗憾需要一个变量。如果你不希望它是循环范围内的局部变量,你可以创建一个由deleteCache()设置的对象属性,但除非它被其他函数使用,否则局部变量是最干净的解决方案。

假设$this->deleteCache()始终返回truefalse,您可以将其缩短为以下内容:

$result = true;
foreach($this->_cacheLocations as $cacheId)
{
        $result = $this->deleteCache($cacheId) && $result;
}
return $result;