那要看你怎么筛选了, 如果是在统一方法里面循环筛选的话,那就把筛选出来的赋值到一个数组里面 然后再次筛选出来的时候就去匹配,如果有就不动,没有就再赋值到数组里。
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的新昌网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
如果是不同的方法,那就用session或者单独建个表去保存随机出的数据中的标识,再然后还是匹配
for ($i=1;$i5;$i++) {
$a = explode(",",$_MODULE['c' .$i]);
$b = explode(",",$_MODULE['d' .$i]);
$c[$i]=array('a'=$a,'b'=$b);
}//先把你上面的数组取出来,好像你相同数字下标的要在一行显示是吗?所以,为了不把$a和$b拆开,把它们封装到一个数组里。另外,你是要把$i乱序还是要把$n乱序呢?我实现的是$i乱序
shuffle($c);//此处把5组数据乱序
foreach($c as $value){//取出$C里的每组值即array($a,$b)
$i=1;
for($n=0;$ncount($value['a']);$n++)
echo 'divp'.$i.'/pp'.$value['a'][$n].'/pp'.$value['b'][$n].'/p/div';
$i++;
}
针对单独访客来存储该访客访问过的纪录, 只是能COOKIE了, 但这样的话清除浏览器COOKIE后就无效了. 大致思路是这样, 具体可能会有些逻辑需要优化.
?php
//访问
if (!isset($_COOKIE["visited"]) {
$_COOKIE["visited"] = "";
}
if ($_COOKIE["visited"] != "") {
$sql = "select * from table where id not in (" . $_COOKIE["visited"] . ") order by rand() limit 1";
} else {
$sql = "select * from table where order by rand() limit 1";
}
//访问取出纪录后, 得到该条纪录的ID $id, 将ID存入COOKIE
if ($_COOKIE["visited"] == "") {
$_COOKIE["visited"] = $id;
} else {
$_COOKIE["visited"] .= "," . $id;
}
1、 $base 基数组 如果是8位这个数组必须是8位
2、 $i 自增数,自增数不能超过8位数
当前简单分析的结果就是以上。大家如果是全局不重复,还是建议使用uuid之类的比较合适。