2012-02-25 17 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

答えて

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

なぜ各クライアントを異なるメタ値に追加しますか?すべてのクライアントを1つのメタ値に追加することができます - ch_client_name - 配列になります。これにより、構造が簡単になります。

構造を変更した場合は、最初に配列としてメタ値を取得し、シャッフルを使用して配列を繰り返し処理することをお勧めします。

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

foreach ($clientNames as $clientName){.... 
関連する問題