我有一个MySQL行,我通过这样做获取数据:
...['immobile' => $dati_immobile->row(),]...
然后我有一个表,我传递一个函数内的每个字段,这是函数代码:
public function brochurefield($field, $label, $checkbox = false)
{
if($field == 0){
return '<tr><td>'.$label.' Is zero</td></tr>';
}
}
当我使用从MySQL获取的文本字段回显此函数时,它返回0:
//This returns "Accessori Bagno Is zero"
<?= $this->ui_model->brochurefield($immobile->arredo_bagno, "Accessori Bagno") ?>
//This returns "termo arredo" (text from DB)
<tr><td><?= $immobile->arredo_bagno ?></td></tr>
它基本上将字段读为0
而不是“termo arredo”。
如果我检查$field == "0"
(字符串)和$field == ''
(空字符串)上的字段,结果为false。
只有当我根据0
(int)值检查它时,结果才为真。
问题仅发生在字符串值上,而在int值上我得到预期结果(brochurefield(32,"test")
正确返回数字32)。
我使用PHP 7.1.1
答案 0 :(得分:1)
您必须使用if条件,例如。
该值由字符串的初始部分给出。如果是字符串 从有效的数字数据开始,这将是使用的值。 否则,该值将为0(零)。有效的数字数据是 可选符号,后跟一个或多个数字(可选地包含一个 小数点),后跟可选的指数。指数是一个 &#39; E&#39;或者&#39; E&#39;后跟一个或多个数字。
这意味着:
("test" == 0) === true
("1test" == 0) === false
if ($field == "" || $field == "0" || (is_numeric($field) && $field == 0)) {
如需更多参考,请访问PHP manual