昨天,我發佈了一個answer問題,其中包括幾個(當時未知的)非常不好的代碼示例。從那以後,我一直在看我的PHP基礎知識,這讓我認爲這樣的代碼是可能的。這使我想到,我似乎無法找到一個問題的答案:這是一個很好的測試,看看是否設置了一個變量
如果我要檢查一個變量是否已經設置什麼,是一個有效的做法是不使用或isset()
另一幫手功能?這裏有一個「實例」:
if($not_set){
//do something
} else {
//do something else
}
不是...
if(isset($not_set)){
//do something
} else {
//do something else
}
從變量的名稱,你可以看到這個變量沒有設置。因此,條件將是錯誤的,並且else
部分將運行。到目前爲止,我一直在使用這種做法,但在昨天的帖子後,我現在有一個暗示,這是錯誤的。
這就是爲什麼我認爲這是一個不錯的做法,省略了上面的isset()
函數。從PHP手冊:
if結構是很多語言的最 重要的特性之一,包括 PHP。它允許 條件執行代碼 片段。 PHP設有如果 結構,它是類似於的 C:
如果(表達式)語句
正如在節約 表達式所描述的,表達被評估 其布爾值。如果表達式 的計算結果爲TRUE,則PHP將執行 語句,如果它的計算結果爲 FALSE - 它將忽略它。更多 有關將 設置爲FALSE的值的信息可在 「轉換爲布爾值」部分找到。
而且從 '轉換爲布爾值一節':
當轉換爲boolean ,以下值被認爲是 FALSE:
... *特殊類型NULL(包括未設置的變量)
爲什麼手冊不能說明未設置變量如果這是一個不好的做法,包括bles?如果未設置,它將轉換爲NULL,因此可以通過條件進行正確評估。使用isset()
將會找到相同的結果,但會花費額外的週期來完成。
有人能告訴我我整個過程是否錯誤,爲什麼? (也許它有多糟?)
謝謝,所以你永遠不會失望。
編輯:謝謝大家(這很快)。我真的認爲迄今爲止所有的答案都很好,不知道應該選擇哪個答案......如果你沒有選中,我仍然會贊成:o)
好吧
null
一樣好,你的做法*會*捕未設置變量,但它也會捕獲* *設置的其他變量。所以這不是一個真正的變量被設置的測試 – Gareth 2010-07-20 23:23:07另請參閱http://stackoverflow.com/questions/1960509/isset-and-empty-make-code-ugly – deceze 2010-07-20 23:25:37
嘿欺騙!感謝昨天的一切 - 我的PHP理解有了巨大的飛躍(如你所見)。我在搜尋時沒有看到那個,但是我想的基本上是一樣的。 – Tim 2010-07-20 23:31:02