Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 细枝乱序数组,包括不应重复的';T_Php_Arrays_Twig - Fatal编程技术网

Php 细枝乱序数组,包括不应重复的';T

Php 细枝乱序数组,包括不应重复的';T,php,arrays,twig,Php,Arrays,Twig,我有一个简单的值数组。我需要输出其内容的“随机”子集,但不能重复。然而,到目前为止,我得到的是包括副本 服务器没有安装Twig阵列扩展,因此我无法访问Shuffle筛选器 哦,如果有更好的方法,我愿意接受建议 {% set arrImgs = {'0':'a','1':'b','2':'c','3':'d','4':'e','5':'f','6':'g','7':'h'} %} {% set outputQty = 5 %} {% set randomizedArr = [] %} {#

我有一个简单的值数组。我需要输出其内容的“随机”子集,但不能重复。然而,到目前为止,我得到的是包括副本

服务器没有安装Twig阵列扩展,因此我无法访问Shuffle筛选器

哦,如果有更好的方法,我愿意接受建议

{% set arrImgs = {'0':'a','1':'b','2':'c','3':'d','4':'e','5':'f','6':'g','7':'h'} %}

{% set outputQty = 5 %}
{% set randomizedArr = [] %}  

{# create new array of randomly selected elements (just to shuffle the order)   
   and limit the result to outputQty #}
{% for i in 0..100 if  randomizedArr|length < outputQty %} 
    {% set tmpImg = [random(arrImgs)] %}
    {% if tmpImg not in randomizedArr %}
        {% set randomizedArr = randomizedArr|merge(tmpImg) %} 
    {% endif %}
{% endfor %} 


{% for img in randomizedArr %}
    {{ img }}, 
{% endfor %}
{%set arrImgs={'0':'a','1':'b','2':'c','3':'d','4':'e','5':'f','6':'g','7':'h'}%
{%set outputQty=5%}
{%set randomizedArr=[]%}
{#创建随机选择元素的新数组(只是为了无序排列顺序)
并将结果限制为outputQty#}
{对于0..100中的i,如果随机化DARR |长度<输出数量%}
{%SETTMPIMG=[随机(arrImgs)]%}
{如果tmpImg不在randomizedArr%}
{%set randomizedArr=randomizedArr |合并(tmpImg)%}
{%endif%}
{%endfor%}
{randomizedArr%中img的百分比}
{{img}},
{%endfor%}

由于有此功能的扩展,我建议尽可能安装它。当然,如果是的话,我想你会这么做的

您的代码并没有像现在这样工作,但将与几个关键的tweek一起工作

{% set arrImgs = {'0':'a','1':'b','2':'c','3':'d','4':'e','5':'f','6':'g','7':'h'} %}

{% set outputQty = 5 %}
{% set randomizedArr = [] %}  

{# create new array of randomly selected elements (just to shuffle the order)   
   and limit the result to outputQty #}
{% for i in 0..100 if  outputQty < arrImgs|length and randomizedArr|length < outputQty %} 
    {% set tmpImg = random(arrImgs) %}
    {% if tmpImg not in randomizedArr %}
        {% set randomizedArr = randomizedArr|merge([tmpImg]) %} 
    {% endif %}
{% endfor %} 


{% for img in randomizedArr %}
    {{ img }}, 
{% endfor %}
{%set arrImgs={'0':'a','1':'b','2':'c','3':'d','4':'e','5':'f','6':'g','7':'h'}%
{%set outputQty=5%}
{%set randomizedArr=[]%}
{#创建随机选择元素的新数组(只是为了无序排列顺序)
并将结果限制为outputQty#}
如果outputQty

请注意,我在
for
循环中添加了一个检查,它将确保您不会通过请求比
arrImgs
数组所能提供的更多的唯一项来创建无限循环。此外,您的检查不起作用,因为您的
randomizedArr
从不包含任何散列项目,并且您将
设置为
tmpImg
散列,其中包含从
arrImgs
中拾取的项目。通过将转换移动到has到实际的
merge
调用,这个问题就解决了。

由于有一个扩展,我建议尽可能安装它。当然,如果是的话,我想你会这么做的

您的代码并没有像现在这样工作,但将与几个关键的tweek一起工作

{% set arrImgs = {'0':'a','1':'b','2':'c','3':'d','4':'e','5':'f','6':'g','7':'h'} %}

{% set outputQty = 5 %}
{% set randomizedArr = [] %}  

{# create new array of randomly selected elements (just to shuffle the order)   
   and limit the result to outputQty #}
{% for i in 0..100 if  outputQty < arrImgs|length and randomizedArr|length < outputQty %} 
    {% set tmpImg = random(arrImgs) %}
    {% if tmpImg not in randomizedArr %}
        {% set randomizedArr = randomizedArr|merge([tmpImg]) %} 
    {% endif %}
{% endfor %} 


{% for img in randomizedArr %}
    {{ img }}, 
{% endfor %}
{%set arrImgs={'0':'a','1':'b','2':'c','3':'d','4':'e','5':'f','6':'g','7':'h'}%
{%set outputQty=5%}
{%set randomizedArr=[]%}
{#创建随机选择元素的新数组(只是为了无序排列顺序)
并将结果限制为outputQty#}
如果outputQty
请注意,我在
for
循环中添加了一个检查,它将确保您不会通过请求比
arrImgs
数组所能提供的更多的唯一项来创建无限循环。此外,您的检查不起作用,因为您的
randomizedArr
从不包含任何散列项目,并且您将
设置为
tmpImg
散列,其中包含从
arrImgs
中拾取的项目。通过将转换移动到has到实际的
merge
调用,这个问题就解决了