2015-09-03 35 views
1

像這個問題說我正在使用PHP的array_rand函數,我的目標是獲得此函數在我的循環中隨機生成一個類。目前它每次只打印數組中的第二個值。我怎樣才能讓這個回聲成爲循環中div的隨機類?嘗試獲得隨機數組值回顯元素類

if ($featured_query->have_posts()) : 

        while ($featured_query->have_posts()) : 

         $featured_query->the_post(); 
         $masonry_classes = array(
         'grid-item', 
         'grid-item--width2' 
         ); 
        $random_class = array_rand($masonry_classes, 2); 
         ?> 
        <li <?php //post_class($classes); ?> class="<?php echo $masonry_classes[$random_class[1]]; ?>"> 
+0

爲什麼你從採摘2數組和只使用1? –

+0

它的一個循環運行,我想要一個類被隨機分配到循環使用同位素砌體網格,只有兩個類我需要隨機選擇 – Derek

+1

'echo $ masonry_classes [array_rand($ masonry_classes)];'應該工作很好 –

回答

1

因爲你只需要一個數組元素,你可以結合(隨機)的選擇,並顯示在一個方便的班輪:

echo $masonry_classes[array_rand($masonry_classes)]; 

裁判:array_rand()

1

它看起來像你誤解了array_rand的工作原理。

如果不指定第二個參數或將其設置爲1,則該函數將返回一個整數,該整數是數組中隨機條目的索引。

如果將第二個參數設置爲大於1的數字,那麼該函數將返回一個隨機選取的索引數組。

所以,如果你這樣做:

$rand = array_rand($masonry_classes); 

...你最終會與任何01(因爲你的數組包含兩個條目,其指標分別爲01)。在這種情況下,你可以做

$class = $masonry_classes[array_rand($masonry_classes)]; 

檢索一個隨機類及以下,以打印:

class="<?php print $class; ?>" 

如果你

$rand = array_rand($masonry_classes, 2); 

那麼它將返回2個隨機指標這在你的情況都是,01

要檢索匹配條目你現在就必須做到以下幾點:

$classes = array_intersect_key($masonry_classes, array_flip($rand)); 

,使它們在你的HTML根本就以下連接:

class="<?php print join(' ', $classes); ?>" 
+0

對不起,我沒有得到什麼downvote是。我以爲我清楚地向作者解釋他/她做錯了什麼。 – Andris

+0

我認爲這是一個非常徹底的答案,並幫助澄清我的困惑。 Dagon先回答並引用鏈接,但感謝你的回答,因爲它幫助:) – Derek