加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php从目录生成随机图像

发布时间:2020-12-13 13:46:53 所属栏目:PHP教程 来源:网络整理
导读:我必须从目录生成随机图像.我知道哪个很简单, $dire="images/"; $images = glob($dire. '*.{jpg,jpeg,png,gif}',GLOB_BRACE); $randomImage = $images[array_rand($images)]; input type="image" src="?=$randomImage;?" alt="?=$randomImage;?" / 但我必须
我必须从目录生成随机图像.我知道哪个很简单,
$dire="images/";
   $images = glob($dire. '*.{jpg,jpeg,png,gif}',GLOB_BRACE);
   $randomImage = $images[array_rand($images)];
   <input type="image" src="<?=$randomImage;?>" alt="<?=$randomImage;?>" />

但我必须确保该目录中的每个图像在随机生成第二次之前至少选择一次.以上代码仅显示任何随机图像.

我的想法是,我必须将随机图像存储在一个数组中,并且每次使用新创建的随机图像检查数组.如果新的随机图像不在该数组中,我需要显示该图像,否则我必须找到另一个图像.

我用上面的想法创建了下面的代码.

$allimgs=array();
  $dire="images/";
  $images = glob($dire. '*.{jpg,GLOB_BRACE);
  $randomImage = $images[array_rand($images)];

   if(!in_array($randomImage,$allimgs))
   {
     $allimgs[]=$randomImage;
     <input type="image" src="<?=$randomImage;?>" alt="<?=$randomImage;?>" />
   }

但我仍然坚持使用此代码.有人请帮忙改进这段代码吗?或任何其他想法?

谢谢.

对array_rand的一种替代方法是shuffle:
$dire="images/";
$images = glob($dire. '*.{jpg,GLOB_BRACE);
shuffle($images);

然后显示下一个随机图像:

$randomImage=array_pop($images);

当数组为空时,再次调用初始化代码.把它放在一起:

$images=array()  //Initialize once at top of script
$dire="images/";
...
if(count($images)==0){
  $images = glob($dire. '*.{jpg,GLOB_BRACE);
  shuffle($images);
  }
$randomImage=array_pop($images);

(我故意重复了glob(),以便在第二次迭代时发现任何新图像.)

附:我假设你明白,默认情况下,PHP是无状态的.如果这应该在每次用户访问页面时给每个用户一个不同的图像(例如旋转横幅广告),那么代码几乎相同,但将$images数组移动到$_SESSION.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读