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

Shopify-Liquid中if语句未按预期工作的原因排查

问题分析与修复

你的代码存在两个核心错误,导致筛选逻辑完全偏离预期:

1. 错误的数组访问与循环嵌套

原代码中header[-1]是取每个子数组的最后一个元素(比如第一个子数组的"0.0"),随后for charge in header[-1]是在遍历这个字符串的单个字符,而非你预期的子数组元素。此时charge[2]是访问单个字符的索引(比如字符"0"没有索引2,返回nil),和0比较的逻辑完全失效。

2. 字符串与数字的类型不匹配

就算拿到了目标元素,直接用字符串(如"0.0"、"8.8")和数字0比较,Liquid的自动类型转换可能出现异常,导致判断结果不准确。


修复后的代码

{% assign array_of_arrays = [["0.0","5.0","0.0"],["0.0","6.6","8.8"],["0.0","9.9","1.1"]] %}

{%- for sub_array in array_of_arrays -%}
  {% assign third_value = sub_array[2] | plus: 0 %}
  {% if third_value > 0 %}
     "this is it!!"
  {% endif%}
{%- endfor -%}

修复点说明:

  • 移除多余的第二层循环,直接遍历每个子数组sub_array
  • 用sub_array[2]直接获取子数组的第三个元素(Liquid数组索引从0开始)
  • 通过| plus: 0过滤器将字符串转为数字,确保数值比较的准确性

修改后即可正确筛选出第三个元素大于0的子数组,仅输出后两个子数组对应的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:22:09