繁体   English   中英

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

[英]Return false if one call returns false in a function

这是一个基本的逻辑问题:我有一个函数, 如果所有方法/查询都返回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 = $all_query_ok & deleteThree($p);
    $all_query_ok = $all_query_ok & deleteFour($p);
}

return $all_query_ok;

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

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM