如何在没有任何循环php的情况下从数组中随机获取项目

Posted

技术标签:

【中文标题】如何在没有任何循环php的情况下从数组中随机获取项目【英文标题】:how to get items randomly out of an array without any loop php 【发布时间】:2015-10-30 10:44:01 【问题描述】:

大家好,我的网页中有这个设计

每次页面刷新时,我希望每个块中的不同图像每个块中的图像更改 像块 1 中的 image1 和块 2 中的 image2 等等我不能使用循环,因为这里的 div 不一样我有这个特定的模式

我可以从我的数据库中获取图像并将其存储在一个数组中,但我不知道如何将它们放置在这些 div 中以彼此区分

请看下面的代码

   $getimages=mysqli_query($conn,"select uid,vname,thumb,views from 
   tablename where something !='0' and somethingelse !='' order by rand()   limit 21");
   $Results = array();
   while($tmp=mysqli_fetch_assoc($getimages))
   $Results[] = array('uid' => $tmp['uid'], 
   'vname' => $tmp['vname'], 'thumb' => $tmp['thumb']);
     
    $i=randim('13');
     function randim($code)
    return rand(0,10);
     

请给我一些提示来解决这个问题我想要每个块中的单个图像我不能使用循环,因为 div 是非重复的

在我的 div 中,我将图像称为

  <div class="somethingddd" style="background:url('mem/<?=$Results[$i]['uid']?>/img/<?=$Results[$i]['thumb']?>');background-size:cover;">

            </div>

【问题讨论】:

我觉得你可以用desandro.github.io/masonry 使用 array_shuffle 随机化数组的顺序,然后使用 array_pop 从数组中取出每次使用的元素 @Orangepill 感谢您的评论,但您能否将其作为答案发布并提供更多提示..... @JasbirSinghSohanpal 我不想要我拥有的设计我想要来自 div 内数组的随机图像.. 会不会总是有 7 个 div 块,每个块会有 1 个图像? 【参考方案1】:

我能想到的最简单的方法是打乱您的数组,然后使用固定偏移量来获取每个位置元素。

<?php
    shuffle($Results);
?>
<div class="position0" style="background:url('mem/<?=$Results[0]['uid']?>/img/<?=$Results[0]['thumb']?>');"></div>
<div class="position1" style="background:url('mem/<?=$Results[1]['uid']?>/img/<?=$Results[0]['thumb']?>');"></div>
<div class="position2" style="background:url('mem/<?=$Results[2]['uid']?>/img/<?=$Results[0]['thumb']?>');"></div>
<div class="position3" style="background:url('mem/<?=$Results[3]['uid']?>/img/<?=$Results[0]['thumb']?>');"></div>
<div class="position4" style="background:url('mem/<?=$Results[4]['uid']?>/img/<?=$Results[0]['thumb']?>');"></div>
<div class="position5" style="background:url('mem/<?=$Results[5]['uid']?>/img/<?=$Results[0]['thumb']?>');"></div>
<div class="position6" style="background:url('mem/<?=$Results[6]['uid']?>/img/<?=$Results[0]['thumb']?>');"></div>

然后在您的 css 中,您可以根据类名将样式与每个位置关联。

【讨论】:

【参考方案2】:

while 循环之后尝试以下操作:

shuffle($Results);

祝你好运!

【讨论】:

以上是关于如何在没有任何循环php的情况下从数组中随机获取项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有表单字段的情况下从表单传递数据? (PHP)

如何在没有 OutOfMemory 错误的情况下从 FileInputStream 获取字节数组

从javascript中的数组中获取随机X项

在没有任何库的情况下从多个图像用 Javascript 制作 GIF

如何在没有用户身份验证的情况下从 Spotify 或任何其他 API 获取歌曲预览

如何在没有 Linq 的情况下从列表中获取一些对象?