2010-04-07 49 views
3

是否有任何聰明的方式通過使用smarty tpl-engine在列表中發佈隨機數字(例如1-4)?Smarty多個隨機數字列表

非標準列表排序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> 

我我真的測試過幾乎所有的東西,但我只需要一個智能的小型解決方案:-)

親切的問候, 海因裏希

回答

1

可以在智者使用rand()函數從PHP。傳遞參數作爲循環的次數,你應該完成。

1

你可以做真髒是這樣的:正如你所說 array_rand()

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

編輯

不再洗牌的結果。你真的不能使用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> 
+0

效果很好,但我的產量仍數字而不是隨機 – Heinrich 2010-04-07 13:34:54

+0

@ Heinrich:你得到了什麼輸出? – 2010-04-07 14:05:40

+0

通過使用你的代碼片段,我得到一個乾淨的數字輸出:1,2,3,4,5,而不是像5,4,2,1,3或4,1,2,3,5等隨機的一個。 : -/ – Heinrich 2010-04-07 14:45:17

0

ok了,這似乎是一個PHP的問題。自從最後一個PHP版本以來,array_rand不再是隨機的。我嘗試添加像這樣

|shuffle 

or 

    shuffle(); 

湯姆的智者碼,

但沒有成功> _ <

...

+0

不幸的是,將無法工作,因爲隨機修改傳遞的數組並返回一個布爾值 – 2010-04-08 08:11:11