我的PHP知识有限,很抱歉,如果答案很明显。
我正在使用.rand函数在单击链接时显示3页之一的随机图像。这些页面的名称相同,位于不同的文件夹(页面,媒体,文本)中。我遇到的问题是每次我想要3个不同页面/图像的组合,而不是每次都是相同的3页/图像组合。 我要这个 例如 Page1,Media2,Text1。下一个... 第3页,Media2,Text3。下一个... Page1,Media3,Text2。
相反,它出来了 例如 Page1,Media1,Text1。下一个... 第3页,Media3,Text3。下一个... Page2,Media2,Text2。解决方案可能很简单,但我似乎无法弄明白。
这是我的代码:
<body>
<div id="wrapper">
<div id="click"><a href="index.php?p=<?php echo 'include-'.rand(1,3); ?>">CLICK HERE</a>></div>
<div id="content">
<?php
if (!empty($_GET['p'])) {
$pages_dir = 'pages';
$pages = scandir($pages_dir, 0);
unset($pages[0], $pages[1]);
$p = $_GET['p'];
if (in_array($p.'.inc.php',$pages)) {
include($pages_dir.'/'.$p.'.inc.php');
} else {
echo 'Sorry, page not found.';
}
}
?>
</div>
<div id="content2">
<?php
if (!empty($_GET['p'])) {
$media_dir = 'media';
$media = scandir($media_dir, 0);
unset($media[0], $media[1]);
$p = $_GET['p'];
if (in_array($p.'.inc.php',$media)) {
include($media_dir.'/'.$p.'.inc.php');
} else {
echo 'Sorry, page not found.';
}
}
?>
</div>
<div id="content3">
<?php
if (!empty($_GET['p'])) {
$text_dir = 'text';
$text = scandir($text_dir, 0);
unset($text[0], $text[1]);
$p = $_GET['p'];
if (in_array($p.'.inc.php',$text)) {
include($text_dir.'/'.$p.'.inc.php');
} else {
echo 'Sorry, page not found.';
}
}
?>
</div>
</div>
</body>
答案 0 :(得分:0)
你只使用了一次“rand()”功能,所以你只需要一个随机数。如果您想要更多数字,请多次使用该功能。例如:
$rnd_1 = rand(0,3);
$rnd_2 = rand(0,3);
$rnd_3 = rand(0,3);
每个人都可以产生一个唯一的数字;)
答案 1 :(得分:0)
你只在这里使用rand一次:
<a href="index.php?p=<?php echo 'include-'.rand(1,3); ?>">
有两种解决方案:
不要将rand用作GET参数,只需在设置$ _GET ['p']时生成随机数。
创建另外两个GET参数,例如。媒体的$ _GET ['m'],内容的$ _GET ['c']并用它们替换$ _GET ['p']。
答案 2 :(得分:0)
尝试使用shuffle(glob('*.png'));
,或只使用shuffle();
一系列图片。
参见:
http://php.net/manual/en/function.glob.php
和
http://php.net/manual/en/function.shuffle.php
glob中的字符串可以替换为任何文件扩展名。
您的代码可能如下所示:
$allPics = shuffle(glob('*png')); $pic = array_slice($allPics, 0, 3);
现在$pic[0]
,$pic[1]
和$pic[2]
会保留您的图片。
就我个人而言,如果您只是想要返回3张图片,我认为您应该使用JavaScript。该代码看起来像这样:
首先是外部picloader.js文件:
//+ Jonas Raoni Soares Silva - Google
//@ http://jsfromhell.com/array/shuffle [v1.0]
function shuffle(o){ //v1.0
for(var j,x,i=o.length; i; j=parseInt(Math.random()*i),x=o[--i],o[i]=o[j],o[j]=x);
return o;
}
//everything else by Jason Raymond Buckley
function E(e){
return document.getElementById(e);
}
function picLoader(clickId, outIdsArray, imageArray){
E(clickId).onclick = function(){
var oa = outIdsArray, il = oa.length, sh = shuffle(imageArray), pic = sh.slice(0, il);
for(var i in oa){
E(oa[i]).innerHTML = "<img src='"+pic[i]+"' />";
}
}
}
您网页上的代码现在应如下所示:
<body>
<div id="wrapper">
<input type='button' value='CLICK HERE' id='showPics' />
<div id="content"></div>
<div id="content2"></div>
<div id="content3"></div>
</div>
<script type='text/javascript' src='picloader.js'></script>
<script type='text/javascript'>
var imageArray = ['img1.png', 'img2.png', 'img3.png', 'img4.png', 'img5.png', 'img6.jpg', 'img7.jpg'];
picLoader('showPics', ['content', 'content1', 'content2'], imageArray);
</script>
</body>
</html>
这适用于任何数量的输出元素,只要imageArray
至少与包含输出内容ID的数组一样长。