美文网首页
TP3.2.3标签判断变量等于0

TP3.2.3标签判断变量等于0

作者: 江河湖海琴瑟琵琶 | 来源:发表于2019-11-15 17:30 被阅读0次

不确定算不算BUG.问题已解决.
问题描述:
控制器中给模板赋值变量.

$refund_state = '';
$this->assign('refund_state',$refund_state);

页面上的select元素,根据refund_state不同值选定对应的option选项

<select name="refund_state">
  <option value=""  <if condition="$refund_state eq '' ">selected</if>>--退款状态--</option>
  <option value="0" <if condition="$refund_state eq 0 ">selected</if>>已申请</option>
  <option value="1" <if condition="$refund_state eq 1 ">selected</if>>待退款</option>
  <option value="2" <if condition="$refund_state eq 2 ">selected</if>>退款成功</option>
</select>

当变量值为''空字符串,按理说应该选定第一项,实际效果

图片.png
$refund_state既等于空字符串,又等于数字0?

临时方案,改成用eq标签判断等于0的情况,

<option value="0" <eq name="refund_state" value="0">selected</eq>>未申请</option>
或者直接写php原生语句.

原因如下:PHP中判断变量的值时需要注意
数字0,
字符'0',
空字符'',
null

$arr = [0,'0','',null];
foreach ($arr as $k => $v){
    if(empty($v)){
    echo $k;
    }
}
#输出0123,empty判断四项全部返回true
foreach ($arr as $k => $v){
    if($v == ''){
    echo $k;
    }
}
#输出023
foreach ($arr as $k => $v){
    if($v == 0){
    echo $k;
    }
}
#输出0123
foreach ($arr as $k => $v){
    if($v == '0'){
    echo $k;
    }
}
#输出01

用empty判断,全部返回true.
需要单独判断时最好用绝对的===

相关文章

网友评论

      本文标题:TP3.2.3标签判断变量等于0

      本文链接:https://www.haomeiwen.com/subject/mkqsictx.html