2012-01-14 21 views
0

我不確定這是否可能,但無論如何,你可以經常檢查一個變量的值,看看它是否是一個確定的值?如何經常檢查一個php變量?

+0

因此,「觀察」這個值,如果它改變了,採取一定的行動? – lonesomeday 2012-01-14 16:05:53

+0

對不起,我不知道該怎麼做,我是一個完整的PHP noob。 – Twister 2012-01-14 16:07:35

+1

'register_tick_function'可以做到這一點,但我建議不要這樣做,除非在開發服務器上,否則不要使用它,或者如果你有非常好的理由。你想用這個解決什麼問題? – Wrikken 2012-01-14 16:07:43

回答

1

做到這一點的方式可能不是一個變量。如果你調用一個函數,而不是,你可以採取更具體的行動:

function step() { 
    static $steps = 0; 

    if (++$steps === 100) { 
     header('Location: /foo.php'); 
    } 
} 

可以再用step();調用它,重定向會發生100次的函數被調用。

注意,你可以使用一個$_SESSION變量或數據庫值,或幾乎存儲,而不是靜態變量數據的任何其他方式。

1

您可以選擇一個eventdriven解決方案。 構建保存你的價值類和管理(和顯示器)的增量:

定義

class valueHolder { 
    private $val = 0; 
    private $cb = null; 
    private $trigger = null; 

    //constructor logic comes here 

    public function increment() { 
     $this->val++; 

     if ($this->val > $yourValueGoesHere) { 
      call_user_func($this->cb); 
     } 

    } 

    public registerCallback($cb) { 
     $this->cb = $cb; 
    } 
} 

使用

$myValue = new valueHolder(); 
$myValue->registerCallback(function() { 
    header("location:fooooo.php"); 
}); 

$myValue->increment(); 
$myValue->increment(); 
$myValue->increment(); 
$myValue->increment(); 
//redirection!!!!!! 

警告沒有測試...;)

+0

是的,這是一個很好的解決方案 - 沒有什麼不同,但雷更靈活,解耦和強大。 – lonesomeday 2012-01-14 17:53:27

+0

謝謝。我正在考慮甚至增加一個額外的triggercallback來指定何時應該調用回調。當然,一個讀取價值的公共成員也會丟失......;) – zaphod1984 2012-01-14 20:07:30