2012-02-25 43 views
0

我該如何去使這些項目每次都以隨機順序出現?將PHP rand函數添加到此代碼

  <?php 
      for($i = 1; $i <= 5; $i++) { 
      $nameN = "name{$i}"; 
      $$nameN = get_post_meta(get_the_ID(), "ch_client_name{$i}", TRUE); 
      // or $name[$i], if you can 
      ?> 

      <li data-id="<?php the_ID(); ?>" class="<?php echo $clientterms; ?> portfolio-item" data-type="<?php echo $clientterms; ?>"> 
       <?php echo $$nameN; ?> 
      </li> 

      <?php 
      } ?> 
+0

變量?爲什麼?認真對待那些在PHP中幾乎沒有地方。爲什麼不使用普通的數組 - 總體來說不太好 – xfix 2012-02-25 17:36:38

回答

1
<?php 
$numbers = array(1,2,3,4,5); 
for ($i = 1; $i <= 5; $i++) { 
    $r = rand(0, count($numbers) - 1); 
    $nth = $numbers[$r]; 
    unset ($numbers[$r]); 
    array_unshift ($numbers, array_shift ($numbers)); 
    //Other part of the code 

應該工作。它基本上挑選一個隨機未顯示的項目,並將其從數組中移除。 $nth將存儲哪個是真實項目數。

0

爲什麼你添加每個客戶到不同的元值?您可以將所有客戶端添加到一個元值 - ch_client_name - 它將是數組。這將簡化你的結構。

如果你改變你的結構,我建議首先獲取元值作爲數組,然後使用shuffle並遍歷數組。

$clientNames = get_post_meta(get_the_ID(), "ch_client_name"); 
shuffle($clientNames); 

foreach ($clientNames as $clientName){....