2013-07-18 75 views
0

目前我有3个条件,需要随机满足3次页面一次。因此,如果页面1随机获得第二个条件,则页面2只能随机获得条件1或3,依此类推。为此,我写入数据库(我已经使用数据库记录活动),并在其他页面上调用它以查看以前页面中已满足哪些条件。php跟踪随机情况

我的第一页创建一个随机函数:<?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页中,每个条件只能显示一次。

回答

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']); 
+0

谢谢!一个问题:我需要在每个页面弹出后更新会话变量吗? – user1747079

+0

嗯...我想我也可以只是洗牌一次,然后在每个页面上调用数组中的固定位置。不知道我为什么这么难想。谢谢! – user1747079