PHP中判断变量为空或0时执行对应逻辑处理进度条百分比问题
现有代码存在的问题
- 执行顺序错误:除法计算
$percent = $x/$y写在了判断$y是否合法的逻辑之前,当$y为0或null时,会直接触发除零错误/警告,导致代码提前运行异常。 - 判断逻辑互斥性缺失:两处
if是独立判断没有用else关联,因为$y已经在前面完成赋值,哪怕$y是空值,isset($y)也会返回true,第二处if的赋值会直接覆盖第一处if的$text = '0'结果,空值判断完全失效。 - 边界场景遗漏:没有判断
$y为有效值、但$x为null/空的场景,此时除法计算也会产生非预期结果。 - 注释错误:第二处if判断的注释提及的
$var变量不存在,属于无效注释。
修复后的代码
调整逻辑执行顺序,先做合法性校验,再计算百分比,用互斥判断覆盖所有边界场景:
case 'supplyper': $x = $coin->available_supply; $y = $coin->total_supply; $text = '0'; // 初始化默认值 // 先校验total_supply是否合法(非0、非null、为数值类型) if (!empty($y) && is_numeric($y)) { // 再处理available_supply的合法性 $valid_x = (!empty($x) && is_numeric($x)) ? $x : 0; $percent = $valid_x / $y; $percent_friendly = number_format($percent * 100, 0) . '%'; // 可修改第二个参数调整小数位数 $text = $percent_friendly; }
内容的提问来源于stack exchange,提问作者user17543969
相关产品推荐
相关产品推荐

