实现if-else循环或else-if-and-cani在循环中编写函数的正确方法


Correct way of implementing if else loop or else if and can i write function inside a loop

function toltalRetailerComm($userId) {
    //print_r ($shoppeId);
    $sql = "SELECT shoppe_id FROM atm_super_shoppe WHERE user_id='$userId'";
    $query = $this->db->query($sql);
    if ($query->num_rows() > 0) {
        $result = $query->row();
        $shoppeId = $result->shoppe_id;
        $sql = "SELECT COALESCE(sum(commission),0) as commission FROM atm_shoppe_commission WHERE shoppe_id ='$shoppeId'";
        $query = $this->db->query($sql);
        print_r($shoppeId);
        if ($query->num_rows > 0) {
            $result = $query->row();
            $commission = $result->commission;
            return $commission;
        } else {

区块报价区块2

            $sql = "SELECT shoppe_id FROM atm_store WHERE user_id='$userId'";
            $query = $this->db->query($sql);
            if ($query->num_rows() > 0) {
                $result = $query->row();
                $storeId = $result->shoppe_id;
                $sql = "SELECT COALESCE(sum(commission),0) as commission FROM atm_store_commission WHERE shoppe_id ='$storeId'";
                $query = $this->db->query($sql);
                print_r($storeId);
                if ($query->num_rows > 0) {
                    $result = $query->row();
                    $commission = $result->commission;
                    return $commission;
                }
            }
        }
    }
}

我是PHP新手,有人能告诉我在上面显示的代码中使用if/elseelseif的正确方法吗?它不能去第二个街区。此外,我可以在if/else块内编写函数吗?

你在寻找这样的东西吗:

function toltalRetailerComm($userId) {
    //print_r ($shoppeId);
    $sql = "SELECT shoppe_id FROM atm_super_shoppe WHERE user_id='$userId'";
    $shoppe_query = $this->db->query($sql);
    $sql = "SELECT shoppe_id FROM atm_store WHERE user_id='$userId'";
    $store_query = $this->db->query($sql);
    if ($shoppe_query->num_rows() > 0) {
        $result = $shoppe_query->row();
        $shoppeId = $result->shoppe_id;
        $sql = "SELECT COALESCE(sum(commission),0) as commission FROM atm_shoppe_commission WHERE shoppe_id ='$shoppeId'";
        $query = $this->db->query($sql);
        print_r($shoppeId);
        if ($query->num_rows > 0) {
            $result = $query->row();
            $commission = $result->commission;
            return $commission;
        }
    } else if ($store_query->num_rows() > 0) {
                $result = $store_query->row();
                $storeId = $result->shoppe_id;
                $sql = "SELECT COALESCE(sum(commission),0) as commission FROM atm_store_commission WHERE shoppe_id ='$storeId'";
                $query = $this->db->query($sql);
                print_r($storeId);
                if ($query->num_rows > 0) {
                    $result = $query->row();
                    $commission = $result->commission;
                    return $commission;
                }
            }
        }

每个if都会检查查询是否有任何结果。如果存在-则执行if部分。如果没有,则执行else部分(如果没有else,则不执行任何内容(。

关于函数的问题-你不能在if/else块中创建函数,但你可以从中调用函数

function total ($a, $b){
    return $a+$b;
}

您可以从if块调用它:

if ($a==$b){
   $c = total ($a,$b);
}

编辑:至于你关于无法进入第二个区块的问题。在第二个块之前有一个if,如下所示:

$sql = "SELECT COALESCE(sum(commission),0) as commission FROM atm_shoppe_commission WHERE shoppe_id ='$shoppeId'";
        $query = $this->db->query($sql);
        print_r($shoppeId);
        if ($query->num_rows > 0) 

if检查sql查询是否返回了任何行,该查询应该返回条件shoppe_id ='$shoppeId'之后的第一个非null表达式。只有在没有返回行的情况下,它才会到达第二个块,即此条件的else