我正在做的是循环数组并在数组的每个值上运行一个函数(该函数在成功时返回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;
有没有一种奇特的方法可以做到这一点,还是我应该采取第二种方式?
答案 0 :(得分:3)
我会使用变量,就像你在第二部分代码中所做的那样 - 至少,这就是我在那种情况下所做的事情。
如果要删除一个临时变量,可以使用:
$result = true;
foreach($this->_cacheLocations as $cacheId)
{
if (!$this->deleteCache($cacheId)) {
$result = false;
}
}
return $result;
但这个想法与你发布的内容一样。
答案 1 :(得分:2)
为了跟踪多个返回结果,您很遗憾需要一个变量。如果你不希望它是循环范围内的局部变量,你可以创建一个由deleteCache()
设置的对象属性,但除非它被其他函数使用,否则局部变量是最干净的解决方案。
假设$this->deleteCache()
始终返回true
或false
,您可以将其缩短为以下内容:
$result = true;
foreach($this->_cacheLocations as $cacheId)
{
$result = $this->deleteCache($cacheId) && $result;
}
return $result;