Smarty多个随机数列表

时间:2010-04-07 12:09:08

标签: php smarty random

有没有聪明的方法可以使用smarty tpl-engine在列表中发布随机数(例如1-4)?

标准清单排序1-5:

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
</ul>

这是我的解决方案(PHP):

<ul>
{foreach from=randomNumbers}
<li>{smarty.randomNumbers}</li>
{/foreach}
</ul>

修改后的清单排序1-5(随机):

<ul>
  <li>3</li>
  <li>2</li>
  <li>5</li>
  <li>1</li>
  <li>4</li>
</ul>

我真的测试了几乎所有的东西,但我只需要一个聪明的&amp;对此的小解决方案: - )

亲切的问候, 海因里希

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

<击> 你可以做一些非常脏的事情:

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

<击> 修改

如你所说array_rand()不再洗牌结果。您不能轻易地使用shuffle(),因为它不会返回洗牌数组 - 您可以执行以下操作:

//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>

答案 2 :(得分:0)

好吧,这似乎是一个PHP问题。从上一个PHP版本开始,array_rand不再是随机的。我试图添加这样的东西

    |shuffle

or

    shuffle();

到tom的智能代码,

但没有成功&gt; _&lt;

...