目前我有3个条件需要在3页上随机一次。因此,如果第一页随机获得第二个条件,第2页只能随机获得条件1或3,依此类推。为此我写了一个数据库(我已经使用数据库来记录活动)并在其他页面上调用它以查看在前几页已经满足的条件。
我为第一页创建了一个随机函数:<?php $rand = rand(1, 3); ?>
第二页:
if ($row['manip_1'] == 1){
$man = rand(2,3);
} elseif ($row['manip_1'] == 2){ //should do randomly 1 or 3,
$man_a = rand(1,2); //but don't know how to skip #2 in a
if($man_a == 2){ //random function, so solved it like this
$man = 3;
} else {
$man = 1;
}
} else {
$man = rand(1,2);
}
第三页:
if ($row['manip_1'] == 1 && $row['manip_2'] == 2){
$man = 3;
} elseif ($row['manip_1'] == 1 && $row['manip_2'] == 3){
$man = 2;
} elseif ($row['manip_1'] == 2 && $row['manip_2'] == 1){
$man = 3;
} elseif ($row['manip_1'] == 2 && $row['manip_2'] == 3){
$man = 1;
} elseif ($row['manip_1'] == 3 && $row['manip_2'] == 1){
$man = 2;
} else {
$man = 1;
}
现在的问题是我突然需要第四页。这意味着还应该有第四个条件。这也意味着最后一页上的可能性数量现在为25。我可以像以前一样再次编程,但我想知道是否有更方便的方法来编写依赖于先前页面条件的随机条件。在4页中,每个条件只能显示一次。
答案 0 :(得分:2)
定义条件数组,并将它们存储在会话中,例如
$conditions = array(1,2,3,4);
$_SESSION['conditions'] = $conditions;
随机化很容易:
array_shuffle($_SESSION['conditions']);
然后在每个页面上,您只需从会话中弹出其中一个值:
<?php
# page 1
session_start();
$random_condition = array_pop($_SESSION['conditions']);
并为所有其他页面执行此操作:
<?php
#page n
session_start();
$random_condition = array_pop($_SESSION['conditions']);