Loops 生成不同的smarty随机数

Loops 生成不同的smarty随机数,loops,random,smarty,smarty2,Loops,Random,Smarty,Smarty2,我使用的是smarty v2.6,我想生成随机的不同数字。我正在寻找一种高效、快速的方法来使用已经提供的Smarty功能。这是我生成5个随机数(但不是唯一的)的代码: 你从错误的角度看待这个问题 Smarty用于显示数据,操作数据的指令非常有限。 因为我们在这里讨论的是逻辑,所以您应该在其他地方生成随机唯一数,然后将结果传递给Smarty引擎 因此,假设您正在使用PHP,请尝试以下操作: $min=1; $max=100; $items_to_pick=5; $values=array(); 对

我使用的是smarty v2.6,我想生成随机的不同数字。我正在寻找一种高效、快速的方法来使用已经提供的Smarty功能。这是我生成5个随机数(但不是唯一的)的代码:


你从错误的角度看待这个问题

Smarty用于显示数据,操作数据的指令非常有限。 因为我们在这里讨论的是逻辑,所以您应该在其他地方生成随机唯一数,然后将结果传递给Smarty引擎

因此,假设您正在使用PHP,请尝试以下操作:

$min=1;
$max=100;
$items_to_pick=5;
$values=array();
对于($i=$min;$iassign($random_number',$result);
在模板文件中:


您应该始终尝试将内容与演示文稿分开。Smarty不应该关心它传递的值。(在我看来,外部简单检查以查看是否应该显示某些内容)

如果您确实需要在Smarty模板中执行此操作

方法1

{assign var="distinct_numbers" value=array_fill(1,15,'x')}
{assign var="distinct_numbers" value=array_keys($distinct_numbers)}
{assign var="x" value=shuffle($distinct_numbers)}

{* result *}

{foreach from=$distinct_numbers item="value"}
    {$value} |
{/foreach}


1 | 7 | 3 | 10 | 4 | 8 | 6 | 14 | 13 | 12 | 2 | 5 | 11 | 9 | 15 | 
方法2

  • 数组_fill()
  • 数组_键()
  • 数组_rand()+unset()而不是shuffle())

为什么不使用{math equation='rand(1,12)'}?
{foreach from=$random_numbers item=random}
    {$random}
{/foreach}
{assign var="distinct_numbers" value=array_fill(1,15,'x')}
{assign var="distinct_numbers" value=array_keys($distinct_numbers)}
{assign var="x" value=shuffle($distinct_numbers)}

{* result *}

{foreach from=$distinct_numbers item="value"}
    {$value} |
{/foreach}


1 | 7 | 3 | 10 | 4 | 8 | 6 | 14 | 13 | 12 | 2 | 5 | 11 | 9 | 15 |