Smarty birden rasgele sayılar listesi

3 Cevap php

Hey Stackoverflow-Folks, is there any smart way to post random numbers (e.g. 1-4) in a list by using the smarty tpl-engine?

Standart liste 1-5 sıralaması:

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

İşte benim çözüm (PHP) bulunuyor:

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

modifiye listesi 1-5 sıralanır (rastgele):

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

Gerçekten hemen hemen her şeyi test ettik, ama ben sadece bir akıllı & gerekiyor Bu :-) için küçük bir çözümdür

Kind Regards, Heinrich

3 Cevap

Siz smarty de php gelen rand () işlevini kullanabilirsiniz. Kez sayı döngü çalıştırmak ve yapılması gerektiği gibi parametresini geçirin.

You could do something really dirty like this:

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

Edit

Dediğin gibi array_rand() artık sonuç karıştırır. Bu karıştırılan dizi dönmez çünkü gerçekten shuffle() rahatlıkla kullanamazsınız - olsa böyle bir şey yapabilirsiniz:

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

Tamam, bu bir PHP-Problem gibi görünüyor. Son PHP sürümleri yana, array_rand daha fazla rasgele değildir. Böyle bir şey eklemek için denedim

    |shuffle

or

    shuffle();

Tom'un smarty-kodu,

ancak başarılı olamadı> _ <

...