我有一个关联数组,我循环显示所有信息
这是我的简化代码。
<?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个,而且还有没有重复的结果。
如果我在这里要求很多,那么按照随机顺序展示它们会很好,对我来说是一个很好的开始。
我现在已经尝试了好几个小时了,但是还没到任何地方,所以我希望那里的人可以帮助我。
答案 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 } ?>