2011-04-21 75 views
3

可能重複:
PHP - and/or keywordsphp中的「or」是什麼意思?

我看到的PHP代碼的幾個比特的方式我不熟悉使用or。例如:

fopen($site,"r") or die("Unable to connect to $site"); 

這是否等於||

爲什麼要用這個代替try catch塊?什麼會導致程序運行or die()

+4

有槍你的頭!*打開文件或死* – awm 2011-04-21 17:14:54

+0

*(相關)* [這是什麼符號意味着PHP(http://stackoverflow.com/questions-3737139/reference-what-does-this-symbol-mean-in-php) – Gordon 2011-04-21 17:30:20

+0

你知道,我不認爲這是重複的。這實際上是一個關於「表達或死亡」的含義的問題。 – 2011-04-21 20:14:00

回答

-1

是的,它等於||

在這種情況下,它明確停止執行頁面並打印該錯誤消息。

+1

不等於...它具有不同的優先順序... – Macmade 2011-04-21 17:10:12

0

或模具發生與第一命令失敗。

它類似於try catch,但這是更直接的方法。

注意,這是一個經典試驗:

fopen($site,"r") or die("Unable to connect to $site"); 

只有的fopen($網站, 「R」)返回false,將測試的下半年運行: '模(' 錯誤「) 」。

同樣是if(a || b); b只在a返回false時才運行。

在PHP模具是退出(); http://www.php.net/manual/en/function.exit.php

完全停止執行當前腳本,並打印出錯誤消息。

+1

它與'try-catch'不相似。 – KingCrunch 2011-04-21 17:16:52

+0

有沒有趕上 – Gordon 2011-04-21 20:37:26

+0

_類似的嘗試趕上,在第一個語句,並在假,執行第二個。或者在真實的情況下,不執行第二個陳述或'catch'。我在評論海報問題'你爲什麼要用這個而不是try catch塊? '當try/catch發生錯誤時,這是​​布爾值。 – GAgnew 2011-04-25 05:38:40

1

or有其他優先權。具體的陳述是布爾運算符的小竅門。就像在普通的if-test-expression中一樣,只有第一部分的計算結果爲false纔會執行第二部分。這意味着,如果fopen()沒有失敗,則die()根本不被觸碰。

但是,try-catch只適用於例外,但fopen()不會拋出任何。

今天這樣的事情是「不太好」的風格。使用異常而不是硬流產

if (!($res = fopen($site, 'r'))) throw new Exception ("Reading of $site failed");