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

2019-11-15  本文已影响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.
需要单独判断时最好用绝对的===

上一篇 下一篇

猜你喜欢

热点阅读