Php Smarty多重随机数列表

Php Smarty多重随机数列表,php,smarty,random,Php,Smarty,Random,使用smarty tpl引擎在列表中发布随机数(如1-4)是否有明智的方法 标准件清单排序1-5: <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> 一, 二, 三, 四, 五, 以下是我的解决方案(PHP): {foreach from=ra

使用smarty tpl引擎在列表中发布随机数(如1-4)是否有明智的方法

标准件清单排序1-5:

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
</ul>
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
以下是我的解决方案(PHP):

    {foreach from=randomNumbers}
  • {smarty.randomNumbers}
  • {/foreach}
修改后的列表排序为1-5(随机):

  • 三,
  • 二,
  • 五,
  • 一,
  • 四,
我几乎已经测试了所有内容,但我只需要一个智能小型解决方案即可:-)

亲切问候, Heinrich

您可以在smarty中使用php中的rand()函数。将参数作为运行循环和应该完成的次数传递。

你可以做一些非常肮脏的事情,比如:

<ul>
  {foreach from=0|range:4|@array_rand:5 item=i}
    {assign var=i value=$i+1}
    <li>{$i}</li>
  {/foreach}
</ul>

好的,这似乎是一个PHP问题。自从上一个PHP版本以来,数组不再是随机的。我试着添加这样的内容

    |shuffle

or

    shuffle();
根据汤姆聪明的密码


但是没有成功>.@Heinrich:您得到了什么输出?通过使用您的代码片段,我得到了一个干净的数字输出:1,2,3,4,5,而不是像5,4,2,1,3或4,1,2,3,5等那样的随机输出:-/@Heinrich:奇怪。它对我有用。我想你已经尝试过清除模板之类的一切了。是的,但是我仍然得到了1,2,3,4,5:-(,我需要一个特定的smarty.plugin来正确运行你的代码片段吗?不幸的是,这不起作用,因为shuffle修改传递的数组并返回bool
<ul>
  {foreach from=0|range:4|@array_rand:5 item=i}
    {assign var=i value=$i+1}
    <li>{$i}</li>
  {/foreach}
</ul>
//somewhere in an included PHP file
function shuffle_array($array){ 
   shuffle($array);
   return $array;   
}

{*template *}
<ul>
  {foreach from=1|range:5|@shuffle_array item=i}
    <li>{$i}</li>
  {/foreach}
</ul>
    |shuffle

or

    shuffle();