2015-11-03 93 views
0

我有一個關聯數組,我正在循環顯示所有信息PHP:從關聯數組中選擇隨機值

這是我的簡化代碼。

<?php 

    $preview_content = array(); 
    $preview_content[0] = array(
    "preview_title" => "1. Placeholder Text h2", 
    "preview_text" => "1.Lorem ipsum Deserunt eu nulla et sunt." 
    ); 


    $preview_content[1] = array(
    "preview_title" => "2. Placeholder Text h2", 
    "preview_text" => "2 .Lorem ipsum Deserunt eu nulla et sunt pariatur." 
    ); 

    $preview_content[2] = array(
    "preview_title" => "3. Placeholder Text h2", 
    "preview_text" => "3 .Lorem ipsum Deserunt eu nulla et sunt pariatur ex Duis dolore." 
    ); 

    $preview_content[3] = array(
    "preview_title" => "4. Placeholder Text h2", 
    "preview_text" => "4 .Lorem ipsum Deserunt eu nulla et sunt pariatur ex Duis dolore." 
    ); 

    $preview_content[4] = array(
    "preview_title" => "5. Placeholder Text h2", 
    "preview_text" => "5 .Lorem ipsum Deserunt eu nulla et sunt pariatur ex Duis dolore deserunt reprehenderit ." 
    ); 

    $preview_content[5] = array(
    "preview_title" => "6. Placeholder Text h2", 
    "preview_text" => "6 .Lorem ipsum Deserunt eu nulla et sunt pariatur ex Duis." 
    ); 

    // $rand = array_rand($preview_content); 

    ?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 

    <div class="preview-wrap"> 
    <ul> 


    <?php foreach($preview_content as $preview) {?> 
     <li> 
     <h2 class="sm-prev-title"><?php echo $preview["preview_title"]; ?></h2> 
      <div class="preview"> 
      <p><?php echo $preview["preview_text"]; ?></p> 
      </div> 
     </li> 
    <?php } ?> 

    </ul> 
    </div> 


</body> 
</html> 

什麼,我需要做的是在隨機順序,每次迴應此信息,idealy還可以選擇多少結果將顯示的選項,所以不是所有的6也許只是其中的3,也因爲那裏沒有重複的結果。

如果我在這裏要求很高,那很好,只要讓他們以隨機順序顯示對我來說是一個很好的開始。

我一直試圖做幾個小時,但還沒有真正有任何地方,所以我希望有人能幫助我。

+1

如果你只是想隨機排序的陣列看看[洗牌](http://php.net/shuffle)。然後你可以循環訪問數組,它將以該隨機順序循環。只用'shuffle($ preview_content);'替換代碼中的'array_rand'註釋。下面的循環每次都會顯示不同的順序。 –

回答

0

獲取獨特的陣列的第一 -要獲得陣列上的洗牌,運行array_unique()之前唯一的陣列。

Shuffle Array Second -我同意Johnathan Kuhn的評論,肯定使用shuffle()來隨機化。

限制輸出三 -要限制輸出,添加$關鍵看你的foreach和休息的時候,關鍵是太高:

<?php foreach($preview_content as $key => $preview) {?> 
    <?php if($key > 3){ break; } ?> 
    <li> 
     <h2 class="sm-prev-title"><?php echo $preview["preview_title"]; ?></h2> 
     <div class="preview"> 
      <p><?php echo $preview["preview_text"]; ?></p> 
     </div> 
    </li> 
<?php } ?> 
0

你可以嘗試的是array_rand()第二個參數(它定義了要選擇的元素的數量)。

$count = 3; 
$rand_keys = array_rand($preview_content, 3); 
foreach ($rand_keys as $key) { 
    echo $preview_content[$key]["preview_title"]; 
} 

此外,就像一個想法:你大概會從數據庫中獲取數據。 MySQL有辦法回饋一個隨機訂單。這樣你從一開始就有一些隨機性。

SELECT value 
FROM database.table 
ORDER BY RAND() 
LIMIT 5