【发布时间】:2015-04-29 15:42:33
【问题描述】:
我正在尝试按字母顺序对类别列表进行排序。由于这更像是一个 PHP 缺陷,我正试图以here 描述的方式来做到这一点。我真的无法访问系统的核心文件,因此需要使用 Twig 标签来完成。
当使用数值变量作为 Twig 数组中的键时,不能使用内置排序过滤器过滤器。这是一个非常具体的问题,这是由于使用了 array_merge php 函数
我正在尝试将链接中的代码合并到我自己的代码中,但我无法正确完成它。
我这样称呼我的类别:
{% for category in shop.categories %}
{{ category.title }} - {{ category.id }}
{% endfor %}
如果我理解正确的代码,我应该这样做:
{% set tempArray = {} %}
{% for category in shop.categories %}
numeric : {{ category.id }}, text : {{ category.title }} <br />
{% set tempArray = tempArray | merge({('_' ~ category.numeric):(category.text)}) %}
{% endfor %}
{% for val in loopArray %}
{{ tempArray['_' ~ val] }} <br/ >
{% endfor %}
这不会对类别名称进行排序,但仍会对类别 ID 进行排序。
我有什么遗漏吗?
【问题讨论】:
-
@Med:查看我的更新答案。问题是我正在使用的数组同时使用数字作为文本值。我希望它对文本值进行排序,而不是数值。
-
还不够清楚,能否给我们看一些来自
tempArray的数据示例以及预期结果 -
您应该在尝试排序之前尝试将值转换为单一类型
-
@Jean:那是什么意思?我还在学习树枝:(