美文网首页
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