不确定算不算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>
当变量值为''空字符串
,按理说应该选定第一项,实际效果
$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.
需要单独判断时最好用绝对的===
网友评论