如何在3个随机位置显示3个随机div

时间:2015-02-26 23:14:54

标签: php

如何在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]]; ?>

1 个答案:

答案 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。