donkey111111 2013-09-12 07:02
浏览 13
已采纳

PHP的IF条件中的一些困惑

This is the code

$a = 'Rs 15.25';
if ( $a != '' && $a! = 0 ) {
    echo "Inside If";
} else {
    echo "Outside If";
}

actually I want to Print "Inside If" so that's why I put $a='Some String Value'. But it always prints "Outside If". Then I changed my code to

$a = 'Rs 15.25';
if ( $a != '' && $a != '0' ) {
    echo "Inside If";
} else {
    echo "Outside If";
}

I have just added single quotes to 0. Then i got the exact output as i want. But I didn't understand why this happens. So please help me with this.

  • 写回答

3条回答 默认 最新

  • dqmfo84644 2013-09-12 07:07
    关注

    PHP does weak type comparison, that is, it converts both operands to the same type before doing the actual comparison.

    If one of the operands is a number, the other one is converted to a number as well. If the second operand is a string and contains no digits, it is silently converted to the number 0.

    To avoid this whole issue, use string type checking with the operator !== (=== for equality).

    if($a !== '' && $a !== 0) {
        echo "Inside If";
    } else {
        echo "Outside If";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀