Php 细枝-如何随机化数组中的项目并循环它们?

Php 细枝-如何随机化数组中的项目并循环它们?,php,arrays,twig,twig-filter,Php,Arrays,Twig,Twig Filter,我如何随机化数组中的项目并循环它们 {% for item in article.resources|shuffle|slice(1) %} ... {% endfor %} 我得到这个错误: 第30行“partials/content.twig”中未知的“shuffle”过滤器 如果我使用: 一无所获 有什么想法吗 注意事项: 顺便说一句,我不想使用PHP。我认为您必须删除它的一部分 尝试此代码,并让我知道这是否有效 {% for item in random(article.res

我如何随机化数组中的项目并循环它们

{% for item in article.resources|shuffle|slice(1) %}
    ...
{% endfor %}
我得到这个错误:

第30行“partials/content.twig”中未知的“shuffle”过滤器

如果我使用:

一无所获

有什么想法吗

注意事项:


顺便说一句,我不想使用PHP。

我认为您必须删除它的一部分

尝试此代码,并让我知道这是否有效

{% for item in random(article.resources) %}

{% endfor %}

您可能希望在for循环中保持一些检查,以确保random不会两次返回相同的项目

Twig已经有了一个
shuffle()
过滤器(在PHP上)

执行类似操作:

$twig = new Twig_Environment($loader);
$function = new Twig_SimpleFunction('shuffle', function ($array) {
    shuffle($array);
    return $array;
});
$twig->addFunction($function);
在这里阅读更多关于它的信息

我用树枝来利用
| shuffle
。在我的安装中,没有加载扩展

将其添加到我的config/services.yml中的“服务”下:

services:
    twig.extension.array:
                class: Twig_Extensions_Extension_Array
                tags: [twig.extension]
然后您可以使用:

{% for item in items|shuffle %}
    ...
{% endfor %}

定义名为
shuffle
的细枝函数,并在此函数中使用php shuffle。请记住,
php shuffle
与引用一起工作,并且没有返回值。
我不想使用php,顺便说一句。
那么您无法完成它。如果twig没有类似于shuffle的东西,那么必须在twig中创建一个函数(用php编写)。而
random
将为您提供一个随机条目,您不能循环此项,因为
random
可能在下一次迭代中提供相同的结果。为什么不在控制器中执行此操作呢?没什么,但
Twig Array Extension
是更好的方法;)现在它没有通过安装扩展来进行排序。谢谢!:-)这里有一个工作链接:谢谢,我修复了anwser!
{% for item in items|shuffle %}
    ...
{% endfor %}