如何在3个随机位置显示3个随机div 我有6个潜力的divs。 现在需要隐藏所有6个div。 当页面加载时我只需要显示3个随机div,另外需要隐藏3个div。
<?php
$divs = array('<div id="divFirst">First Div</div>','<div id="divFirst">Second Div</div>','<div id="divFirst">Third Div</div>');
// Array with 3 random keys from $divs
$randKeys = array_rand($divs, 2);
//echo $divs[$randKeys[0]]; // First random div
//echo $divs[$randKeys[1]]; // Second random div
//echo $divs[$randKeys[2]]; // 3rd div
//shuffle($divs);
?>
<div class="text">This is a simple text</div>
<?php echo $divs[$randKeys[0]]; ?>
<div class="text">This is a simple text</div>
<?php echo $divs[$randKeys[1]]; ?>
<div class="text">This is a simple text</div>
<?php echo $divs[$randKeys[2]]; ?>
<div class="text">This is a simple text</div>
<?php echo $divs[$randKeys[1]]; ?>
<div class="text">This is a simple text</div>
<?php echo $divs[$randKeys[0]]; ?>
<div class="text">This is a simple text</div>
<?php echo $divs[$randKeys[2]]; ?>
答案 0 :(得分:1)
请看:$randKeys = array_rand($divs, 2);
第二个参数指定要从数组中输出的项目数。你想要3,但你告诉它你想要2。
然后你正在做<?php echo $divs[$randKeys[2]]; ?>
即尝试从数组中打印第三个元素(即数组从0开始计数)。但是你现在只有2个元素。
此外,仅保留数组中div的内容会更有意义。然后你可以这样做:
$randKeys = array_rand($divs, 6);
//because you want 3 shown, 3 hidden, thus 6
for($i=0; $i<6; $i++)
{
$style='display: block';
if($i>=3)
{
//we hide the last 3
$style='display: none';
}
echo "<div id='div_$i' style='$style'>" . $divs[$randKeys[$i]] . "</div>";
}
这解决了评论中提到的关于你的div不是唯一的问题。
但是,为了选择6,您需要在$divs
数组中实际拥有6个元素,因为docs for array_rand()状态:
尝试选择比数组中更多的元素将导致E_WARNING级别错误,并且将返回NULL。