我的网站在某个地方有一张图片,当用户重新加载页面时,他应该在同一个地方看到不同的图片。我有 30 张图片,我想在每次重新加载时随机更改它们。我怎么做?
问问题
9396 次
5 回答
8
使用您拥有的“图片信息”(文件名或路径)创建一个数组,例如
$pictures = array("pony.jpg", "cat.png", "dog.gif");
并通过随机调用该数组的一个元素
echo '<img src="'.$pictures[array_rand($pictures)].'" />';
看起来很奇怪,但有效。
于 2012-05-27T12:50:58.667 回答
2
选择随机图像的实际行为将需要一个随机数。有几种方法可以帮助解决这个问题:
如果您专门处理数组,则可以将第二个函数视为使用第一个函数的快捷方式。因此,例如,如果您有一组图像路径可以从中选择要显示的路径,则可以像这样选择一个随机路径:
$randomImagePath = $imagePaths[array_rand($imagePaths)];
如果您以未指定的其他方式存储/检索图像,那么您可能无法array_rand()
轻松使用。但是,最终,您需要生成一个随机数。所以一些使用rand()
会为此工作。
于 2012-05-27T12:49:59.053 回答
1
如果您将信息存储在数据库中,您还可以选择随机图像:
MySQL:
SELECT column FROM table
ORDER BY RAND()
LIMIT 1
PgSQL:
SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1
最好的,菲利普
于 2012-05-27T13:12:11.350 回答
0
在弹出窗口上创建随机图像的一种简单方法是下面的这种方法。
(注意:您必须将图像重命名为“1.png”、“2.png”等)
<?php
//This generates a random number between 1 & 30 (30 is the
//amount of images you have)
$random = rand(1,30);
//Generate image tag (feel free to change src path)
$image = <<<HERE
<img src="{$random}.png" alt="{$random}" />
HERE;
?>
* Content Here *
<!-- Print image tag -->
<?php print $image; ?>
这种方法很简单,我每次需要随机图像时都会使用它。
希望这可以帮助!;)
于 2012-05-27T13:22:19.130 回答
0
我最近写了这个,它在每个页面加载时加载不同的背景。只需将常量替换为图像的路径即可。
它的作用是遍历您的图像目录并从中随机选择一个文件。这样您就不需要在数组或数据库或其他任何东西中跟踪您的图像。只需将图像上传到您的图像目录,它们就会(随机)被选中。
像这样调用:
$oImg = new Backgrounds ;
echo $oImg -> successBg() ;
<?php
class Backgrounds
{
public function __construct()
{
}
public function succesBg()
{
$aImages = $this->_imageArrays( \constants\IMAGESTRUE, "images/true/") ;
if(count($aImages)>1)
{
$iImage = (int) array_rand( $aImages, 1 ) ;
return $aImages[$iImage] ;
}
else
{
throw new Exception("Image array " . $aImages . " is empty");
}
}
private function _imageArrays( $sDir='', $sImgpath='' )
{
if ($handle = @opendir($sDir))
{
$aReturn = (array) array() ;
while (false !== ($entry = readdir($handle)))
{
if(file_exists($sDir . $entry) && $entry!="." && $entry !="..")
{
$aReturn[] = $sImgpath . $entry ;
}
}
return $aReturn ;
}
else
{
throw new Exception("Could not open directory" . $sDir . "'" );
}
}
}
?>
于 2012-05-27T13:45:27.667 回答