2014-06-18 51 views
1

我有一個用於Wordpress的隨機評論腳本,我一直用作一個小部件。它只能顯示一條評論,但現在我需要它顯示三條。我嘗試添加新的變量並輸出複製現有的代碼,但它多次生成相同註釋的可能性比我想象的要多得多。任何建議,將不勝感激。多個mt_rand在同一個腳本中

這裏的原代碼,只顯示一行註釋:

<div style="width:276px;margin:0 15px"> 
<h2>Testimonials</h2> 
<div style="background:rgba(65, 115, 148, 0.3);border-radius:0 0 6px 6px;height:265px;border:1px solid #ddd;box-shadow:0 0 3px #fff;padding:5px;overflow-y:auto"> 

<?php 
    $post_id = 276; // Put the 'testimonials' id here 
    $comments = get_comments("post_id=$post_id&status=approve"); 
    if ($comments) { 
    $ndx = mt_rand(2,sizeof($comments)) - 1; 
    $comment = $comments[$ndx]; 
?> 

<p style="margin-bottom:20px"> 
<span style="float:left;margin-right:3px"><?php echo get_avatar($comment->comment_author_email, 48, $default, $alt); ?></span> 
    <?php 
     if (empty($comment->comment_author)){echo "$comment->comment_author";} 
     else{echo "<a href='$comment->comment_author_url'>$comment->comment_author</a>";} 
    ?> 
- <?php echo "$comment->comment_date"; ?><br /> 
<?php echo "$comment->comment_content"; ?></p> 
<span style="float:right;margin-right:3px;"><?php echo "$comment1->extra_sitename"; ?></span> 

<?php } ?> 

</div> 
</div> 

回答

0

如果我們"unset"從數組中隨機選擇的值,我們可以選擇,而不必擔心重複的另一個。請注意,我將從零開始mt_rand並從sizeof減去1

<?php 
$pid = get_the_ID(); 
$comments = get_comments("post_id=$pid&status=approve"); 
if ($comments) {  
    $ndx = mt_rand(0, sizeof($comments) -1); 
    $comment = $comments[$ndx]; 
    array_splice($comments, $ndx, 1); 

    $ndx = mt_rand(0, sizeof($comments) -1); 
    $comment = $comments[$ndx]; 
    array_splice($comments, $ndx, 1); 

    $ndx = mt_rand(0, sizeof($comments) -1); 
    $comment = $comments[$ndx]; 
    // array_splice($comments, $ndx, 1); // only needed if you'll keep showing comments 
} 
?> 
+0

感謝您的幫助,但我似乎無法得到它的工作。我仍然在學習PHP,但並不擅長。我嘗試提供的代碼,但它只是加載空白。然後,我試圖像以前一樣迴應領域,但仍然沒有。另外,你能否指點我一些手冊或教程的方向,可以解釋爲什麼你從sizeof中減去1?我看到其他代碼也在做,但我不知道它做了什麼。 – Bestrafung

+0

我做了一個小小的更新,因此它看起來像你的代碼,非常容易適應。 -1是因爲數組從零開始,所以具有3個元素(長度== 3)的數組是:'$ arr [0],$ arr [1],$ arr [2]' – brasofilo

1

也許另一種方法。
比方說,你構建了一個可用的評論ID數組。

$commIDs = array(4,34,56,76,100); // comment id from database 

然後你可以使用array_rand()來獲取這個數組的3組隨機的ID。

$choosenIDs = array_rand($commIDs, 3); 

然後,您可以根據選定的ID從db中獲取數據。
這與您所尋找的接近嗎?

編輯:第二個解決方案
您可以直接從數據庫中獲得3個隨機記錄。

Select field FROM table WHERE field2='$value' ORDER BY RAND() LIMIT 3; 
相關問題