2013-07-18 102 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