2

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

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

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

  • 错误的
  • 'sudah absen' (字符串)
  • 1(表示成功)

然后我尝试查看$result使用的值echo $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').'! ^^';

尽管 的值为 $result1 但第二个 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()and意识到发生了什么echo感谢下面的两个答案):

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

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

结论是:使用 TRUE(bool) 值回显变量将导致 1(integer),因此请使用var_dump()代替echo

4

2 回答 2

4

首先你不能返回:

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);
于 2013-03-17T14:16:01.447 回答
2

你确定这正在发生吗?你确定$result=1吗?

我觉得很难相信。这是您的代码的小提琴输出

你的函数true不返回1

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

于 2013-03-17T14:15:53.753 回答