当前位置: 首页 > news >正文

PHP 在 if 判断时由于运算符优先级导致 false 的问题

首先来看一段代码:

$price = '187.50';

if (!is_numeric($price) || $price <= 0 || ($price *= 100 > 1000000)) {
    echo "价格错误:$price\n";
} else {
    echo "价格正确:$price\n";
}

乍一看是不是认为并没有什么问题,$price 会正常乘以 100 转换为“”并输出 价格正确

实则不然

($price *= 100 > 1000000)

// 由于 *= 100 的优先级低于 >,所以代码被解析为下方代码

($price = $price * (100 > 1000000))

然后就简单了,因为 100 > 1000000 返回了 false 导致被转换为 0,最终也就输出了 价格错误:0

而需要注意的点是if 中倒数第二个反括号 ) 转移到 *= 100 后:

$price = '187.50';

if (!is_numeric($price) || $price <= 0 || ($price *= 100) > 1000000) {
    echo "价格错误:$price\n";
} else {
    echo "价格正确:$price\n";
}

保证了 *= 100 先于 > 运算,就不会发生 false 的问题

相关文章:

  • 【具身相关】legged_gym, isaacgym、rsl_rl关系梳理
  • Qt表格美化笔记
  • 华为OD机试-求字符串中所有整数的最小和-逻辑分析(Java 2023 B卷 100分)
  • AGI大模型(2):GPT:Generative Pre-trained Transformer
  • 【Godot4.3】RenderingServer总结
  • 安装 MongoDB 的步骤(Windows / macOS / Linux)
  • 联合中存储平方差
  • FPGA 实现 OV5640 摄像头视频图像显示
  • 【spring】springAOP
  • navicat16 升级到 navicat17 之后原来的连接找不到了 mac用户
  • 侯捷 C++ 课程学习笔记:进阶语法之lambda表达式(二)
  • 利用8个参数定义一个汽轮机,然后根据这8个参数生成汽轮机性能试验时的测点清单-pycharm-源代码(适用所有类型汽轮机)
  • 【搜索页】- 功能流程
  • OpenHarmony-SELinux配置
  • 【git】 Could not read from remote repository.
  • 【Linux】线程池、单例模式、死锁
  • Python爬虫:从人民网提取视频链接的完整指南
  • 练习-纪律问题(幂运算)
  • react__jsx语法
  • Angular由一个bug说起之十四:SCSS @import 警告与解决⽅案
  • 网站开发设备费用计入什么科目/长春网长春关键词排名站设计
  • 网站手机端页面怎么做的/南京seo网站优化推广
  • 查收录网站/品牌推广策略与方式
  • 室内装修哪家好/茶叶seo网站推广与优化方案
  • 贵阳网站建设公司排行/网店运营工作内容
  • 黄石建设网站/百度推广首页登录