You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中if else条件无法传入0值但可传入null值的问题

解决Laravel中else条件无法正确赋值0的问题

你的问题根源在于empty()函数的判断逻辑——它会把数字0、字符串"0"、null、空字符串、空数组等都判定为“空”,导致本该进入if块处理的场景(比如$indicator->rating为"0")错误进入else,或是你期望仅真正空值触发else时,empty()的判定范围过广导致逻辑不符合预期。

修复方案

替换empty()判断,改用更精确的条件区分“真正的空值”和“0值”,同时增加JSON解析的有效性校验:

@foreach ($indicators as $indicator)
  @php
    // 仅当rating不为null且不是空字符串时,才处理解析
    if ($indicator->rating !== null && $indicator->rating !== '') {
      $rating = json_decode($indicator->rating, true);
      // 校验JSON解析结果是否为有效数组,避免调用count/array_sum报错
      if (is_array($rating) && !empty($rating)) {
        $starsum = array_sum($rating);
        $overallrating = $starsum / count($rating);
      } else {
        // 解析失败或数组为空时,设为0
        $overallrating = 0;
      }
    } else {
      $overallrating = 0;
    }
  @endphp
@endforeach

关键说明

  • 用$indicator->rating !== null && $indicator->rating !== ''替代!empty(),确保**数字0、字符串"0"**能正常进入if块处理
  • 新增is_array($rating) && !empty($rating)判断,防止json_decode失败返回null或空数组时触发报错
  • 所有空值场景(null、空字符串、解析失败)都会正确进入对应分支,将$overallrating设为0

内容的提问来源于stack exchange,提问作者Ijaz Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 10:15:34