PHP:从关联数组

时间:2015-11-03 18:07:15

标签: php arrays associative-array

我有一个关联数组,我循环显示所有信息

这是我的简化代码。

    <?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>

我需要做的是每次以随机顺序回显此信息,并且理想情况下还可以选择显示多少结果,因此不是全部6个,也可能只有3个,而且还有没有重复的结果。

如果我在这里要求很多,那么按照随机顺序展示它们会很好,对我来说是一个很好的开始。

我现在已经尝试了好几个小时了,但是还没到任何地方,所以我希望那里的人可以帮助我。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

首先获取唯一数组 - 要在shuffle之前获取唯一数组,请在数组上运行array_unique()。

Shuffle Array Second - 我同意Johnathan Kuhn的评论,绝对使用shuffle()进行随机化。

限制输出第三 - 要限制输出,请将$ key添加到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 } ?>