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

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 的问题


http://www.kler.cn/a/582973.html

相关文章:

  • 《YOLOE: Real-Time Seeing Anything》论文速览翻译,支持文本提示,视觉提示等开放世界检测算法!
  • 深入浅出 Elasticsearch 的 dense_vector 字段类型
  • 数据结构完全指南:C语言实现与核心原理剖析
  • 每日学习之一万个为什么
  • java中小型公司面试预习资料(四):微服务架构
  • 网络编程——http
  • unordered_set 的常用函数
  • 美畅物联丨WebRTC 技术详解:构建实时通信的数字桥梁
  • Unity使用UGUI制作无限滑动列表
  • 设计模式八股整理
  • 宇树ROS1开源模型在ROS2中Gazebo中仿真
  • MOM成功实施分享(七)电力电容制造MOM工艺分析与解决方案(第二部分)
  • 【深度学习】多源物料融合算法(一):量纲对齐常见方法
  • JavaScript中的异步操作详解
  • 电网中实现物料清点,物联网(IoT)技术可以提供高效、精准和自动化的解决方案。
  • 一对一交友App源码开发新趋势:精准匹配与多元盈利模式解析
  • PHP:从入门到进阶的旅程
  • [Spring]属性加载优先级
  • Android电量与流量优化
  • Ubuntu 24.04安装Python 2方法