loops - 生成不同的 smarty 随机数

标签 loops random smarty smarty2

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

{assign var=min value=1}{assign var=max value =5}
{section name=val start=$min loop=$max+1}
{assign var=random value=1|mt_rand:15}
{$random}
{/section}

最佳答案

您从错误的角度处理问题。

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

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

$min = 1;
$max = 100;
$items_to_pick = 5;
$values = array();

for($i=$min; $i<= $max; ++$i){
    $values[] = $i;
}

shuffle($values) //see PHP doc http://www.php.net/manual/en/function.shuffle.php

$result = array_slice($values, 0, $items_to_pick);

$smarty->assign('random_numbers', $result);

在你的模板文件中:

{foreach from=$random_numbers item=random}
    {$random}
{/foreach}

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

关于loops - 生成不同的 smarty 随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23830240/

相关文章:

javascript - 了解 JS 引擎如何循环获取数组元素的索引

python - 查找由数组的 2 个唯一元素生成的所有产品(python)

java - 以不同的概率随机选择一个对象

php - 如何查看 Smarty 模板默默失败的原因?

php - 如何从 mysql 中的日期加载 {html_select_date} 中的日期

jquery - 如何在不使用for循环的情况下更改多个jQuery选定对象的样式?

javascript - 如何遍历 JavaScript 对象的键

random - 在PostScript中生成间隔随机数

algorithm - 生成随机隧道

smarty - smarty foreach 中第一个元素的类