2012-02-25 44 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){....