代码编写器中的模型返回值


model return value in codeigniter

我将模型的返回值存储在$result:

$result = $this->absensi_m->absensi();

根据我在absensi()函数中返回的值,$result的值将是以下值之一:

  • ' sudaah absen'(字符串)
  • 1(表示成功)

然后我尝试使用echo $result;查看$result值,它返回1

但是,当我尝试使用$result进行一些验证时,我得到一个奇怪的错误:

        if($result == FALSE)
            $data['result'] = 'Anda Belum Terdaftar, Silahkan Daftar Dahulu :D';
        else if($result == 'sudah absen')
            $data['result'] = 'Anda Sudah Absen Hari Ini :D';
        else 
            $data['result'] = 'Selamat Datang, '.$this->input->post('txtNama').'! ^^';

虽然$result的值是1,但是第二个if ($result == 'sudah absen')总是返回TRUE

这是怎么回事?谢谢你:D

这是absensi()函数在我的模型:

public function absensi() {
        $nama = $this->input->post('txtNama');
        $tanggal = date('Y-m-d', now());
        $this->db->select('umat_id');
        $terdaftar = $this->db->get_where('msumat', array('nama' => $nama));
        $row = $terdaftar->row_array();
        $sudah_absen = $this->db->get_where('msabsensi', array('umat_id' => $row['umat_id'], 'absensi_tanggal' => $tanggal));
        if($terdaftar->num_rows() != 0 && $sudah_absen->num_rows() == 0)
        {
            $data_umat = array(
            'umat_id' => $row['umat_id'],
            'status' => 'H',
            'absensi_tanggal' => date('Y-m-d')
            );
            return $this->db->insert('msabsensi', $data_umat);
        }
        else if($sudah_absen->num_rows() != 0)
            return 'sudah absen';
        else
            return FALSE;
    }

答:我将在这里回答,因为你可能会对许多评论/对话感到困惑。

我意识到通过使用var_dump()echo发生了什么(感谢下面的两个答案):

$result = $this->absensi_m->absensi();
var_dump($result);
echo $result;

var_dump()返回bool(true)echo返回1。这意味着发生这个问题,因为我认为$result值是1(整数),而实际值是TRUE(bool)。

结论是:用TRUE(bool)值回显变量将得到1(整数),因此使用var_dump()而不是echo

首先你不能返回:

return $this->db->insert('msabsensi', $data_umat);

这样做:

 $this->db->insert('msabsensi', $data_umat);
 return ...-> 1 or true or what you need

那么你应该这样做:

if(!$result){
            $data['result'] = 'Anda Belum Terdaftar, Silahkan Daftar Dahulu :D';
        }
    if($result == 'sudah absen'){
            $data['result'] = 'Anda Sudah Absen Hari Ini :D';
         }
       if($result && $result !== 'sudah absen'){
            $data['result'] = 'Selamat Datang, '.$this->input->post('txtNama').'! ^^';
          }

然后使用var_dump();检查结果:

var_dump($result);

你确定这是真的吗?你确定$result=1 ?

我很难相信。下面是你的代码的输出

你的函数返回true而不是1

您应该添加else if($result === 'sudah absen')来严格检查结果