Php 如果函数中的一个调用返回false,则返回false

Php 如果函数中的一个调用返回false,则返回false,php,logic,Php,Logic,这是一个基本的逻辑问题:如果所有方法/查询都返回true,那么我有一个函数应该返回true。但是,使用这种方法,当最后一个foreach调用返回true时,整个函数都可以返回true–我如何防止这种情况 function deleteAllSuccess(){ $all_query_ok = true; $params = array('A', 'B', 'C'); deleteOne() ? null : $all_query_ok = false; dele

这是一个基本的逻辑问题:如果所有方法/查询都返回true,那么我有一个函数应该返回true。但是,使用这种方法,当最后一个foreach调用返回true时,整个函数都可以返回true–我如何防止这种情况

function deleteAllSuccess(){
    $all_query_ok = true;
    $params = array('A', 'B', 'C');

    deleteOne() ? null : $all_query_ok = false;
    deleteTwo() ? null : $all_query_ok = false;

    foreach($params as $p){
        $all_query_ok = deleteThree($p);
        $all_query_ok = deleteFour($p);
    }

   if($all_query_ok){
       commit();
       return true;
   }else{
       rollback();
       return false;
}

简单的解决方案是,如果希望执行每个函数(或短路),则使用:

或者为了简洁起见,您可以使用
&=
复合赋值运算符:

foreach($params as $p){
    $all_query_ok &= deleteThree($p);
    $all_query_ok &= deleteFour($p);
}
但是,如果您希望在任何函数返回false时立即退出该函数,您可以执行以下操作:

if (!deleteOne()) return false;
if (!deleteTwo()) return false;

foreach($params as $p){
    if (!deleteThree($p)) return false;
    if (!deleteFour($p)) return false;
}

return true;

最好的办法是在得到第一个
false
时触发
return false
,而不要走到函数的末尾…第一个适合,因为如果它失败,我需要回滚,所以我不能在第一次失败时返回false。@dfdfdfdf如果您需要运行每个函数,并且只想收集结果,我意识到我最初的解决方案有问题。请参阅我的更新答案,以获得更好的解决方案。
if (!deleteOne()) return false;
if (!deleteTwo()) return false;

foreach($params as $p){
    if (!deleteThree($p)) return false;
    if (!deleteFour($p)) return false;
}

return true;