1

forループが単一の値(TRUE / FALSE)を返すようにしたい。ただし、コードは複数の値を返します。TRUETRUETRUEのように。私はコードを理解していますが、それを実行する考えはありませんでした。

public function user_activation_check(){
    for($i=1;$i<5;$i++){
        $query = $this->db->query("SELECT group_info.member".$i." FROM `group_info` INNER JOIN `user_student` ON group_info.member$i=user_student.email WHERE user_student.email=group_info.member$i");
        if($query->num_rows()==1){
            //return TRUE;
            echo"true";
        }else {
            //return FALSE;
            echo"false";
        }
    }
}

助けてください。

アップデート:

public function member_activation(){
    if($this->model_users->user_activation_check()){
        $this->load->view('v_confirm_group');
    }else echo "Some members didn't activate their account.";
}
4

3 に答える 3

4

次と同じ配列を使用します。

     $res = array():
for($i=1;$i<5;$i++){
    $query = $this->db->query("SELECT group_........");
    if($query->num_rows()==1){
        $res[] = TRUE;
    }else {
        $res[] =  FALSE;
    }
}
return $res;
于 2013-01-01T16:18:10.593 に答える
1

私はこれがあなたが望むものだと思います:

public function user_activation_check(){
   for($i=1;$i<5;$i++){
        $query = $this->db->query("SELECT group_info.member".$i." FROM `group_info` INNER JOIN `user_student` ON group_info.member$i=user_student.email WHERE user_student.email=group_info.member$i");
        if($query->num_rows()==1){
            // do nothing
        }else {
            echo "false"; // *atleast* one member didn't.
            return FALSE;
        }
    }
    echo "true";
    return TRUE;
}
于 2013-01-01T16:59:24.220 に答える
0

ループを実行しているため、複数の値がエコーされます。ループの実行ごとに1つずつ、5つの値をエコーし​​ます。エコーを1回だけにしたい場合は、を使用しますreturn。関数は複数回エコーできますが、返すことができる値は1つだけです。trueまたはfalseを返すと、関数の実行を終了します。

于 2013-01-01T16:51:20.550 に答える