【发布时间】:2013-03-05 21:25:31
【问题描述】:
我将模型的返回值存储在$result:
$result = $this->absensi_m->absensi();
根据我在absensi() 函数中返回的内容,$result 的值将是以下之一:
- 错误
- 'sudah 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;
}
答案: 我会在这里回答,因为你可能对很多 cmets/conversation 感到困惑。
我通过使用var_dump() 和echo 意识到发生了什么(感谢下面的两个答案):
$result = $this->absensi_m->absensi();
var_dump($result);
echo $result;
var_dump() 返回 bool(true) 而echo 返回 1。这意味着发生此问题是因为我认为 $result 的值为 1(整数),而实际值为 TRUE(布尔)。
结论是:使用 TRUE(bool) 值回显一个变量将得到 1(integer),因此请使用 var_dump() 而不是 echo。
【问题讨论】:
-
@BlazeTama 我的答案是对的。 stackoverflow.com/questions/5938221/string-compare-on-a-bool 只是为了确信我问了另一个问题stackoverflow.com/questions/15462279/… 并被否决了,没有意识到以前有人问过这个问题。 :(
标签: php codeigniter