2015-11-03 120 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