PHP中是否支持直接书写双边不等式的条件判断写法?
PHP双边不等式连写语法说明
原生PHP语法不支持直接书写10 <= $your_price < 15这类连写形式的双边判断表达式。
错误原因说明
PHP的表达式求值遵循从左到右的运算顺序,如果你强行书写连写的双边不等式,实际执行逻辑会完全不符合预期:
- 先计算左侧的
10 <= $your_price,得到布尔类型的true或false结果 - 再将第一步得到的布尔值和
15做大小比较,布尔值参与数值运算时会自动转为整数:true转为1,false转为0 - 最终无论
$your_price取什么值,0 < 15和1 < 15都成立,整个表达式永远返回true,无法实现范围判断的效果。
合法的实现方案
- 官方标准写法就是拆分后用逻辑与拼接,也就是你提到的形式:
if( 10 <= $your_price and $your_price < 15 ){echo 'Bingo!';}
- 如果想要简化写法、避免重复书写变量,可以自行封装范围判断辅助函数,示例如下:
/** * 判断数值是否在指定区间内 * @param mixed $val 待判断的数值 * @param int|float $min 区间最小值 * @param int|float $max 区间最大值 * @param bool $includeMax 是否包含最大值,默认false对应左闭右开区间[min, max) * @return bool */ function between($val, $min, $max, bool $includeMax = false): bool { return $val >= $min && ($includeMax ? $val <= $max : $val < $max); } // 调用示例 if (between($your_price, 10, 15)) { echo 'Bingo!'; }
内容的提问来源于stack exchange,提问作者ptrcao
相关产品推荐
相关产品推荐

