什麼是寫作的最佳方式:檢查字符串是否設置,即使是0
if(!$this->uri->segment('4') && $this->uri->segment('4') != 0)
這是太長篇大論。只需要檢查是否設置一個字符串,即使是0
什麼是寫作的最佳方式:檢查字符串是否設置,即使是0
if(!$this->uri->segment('4') && $this->uri->segment('4') != 0)
這是太長篇大論。只需要檢查是否設置一個字符串,即使是0
這太囉嗦了。只需要檢查是否設置了字符串,即使它是0.
如何檢查字符串的長度?
if (strlen($this->uri->segment('4')) > 0)
編輯明確性,我已經添加> 0,所以它可能是一個多一點的描述是究竟你的期望。然而,這不是必需的。
是的,我懷疑這將是解決方案。 – 2011-06-07 12:21:23
你有一個錯字(正確的)。 – 2011-06-07 12:39:53
@Tomalak你是對的,感謝修復,非常感謝。 – 2011-06-07 12:54:55
無論如何,第一個子句並不是「正確的」,正如你通過編寫第二個子句發現的那樣。您還必須考慮FALSE
和空字符串(""
)。代碼像if ($var)
是懶惰的,通常,錯誤。
測試變量的正確方法是PHP函數isset
。但是,假設$this->uri->segment('4')
是一個函數調用,結果將始終爲「set」。它永遠不會被設置。所以看起來你不太可能在這裏做很多事情。
你有什麼標準真的在找什麼?
也許你的功能segment
返回null
?所以寫if (!is_null($this->uri->segment('4')))
。
或者您正在尋找空串?所以寫if ($this->uri->segment('4') != "")
。
我正在測試一個ID是否已經通過了uri的第四部分。這發生在我檢查數據庫中某個表的ID之前。 – 2011-06-07 12:17:43
@Michael:我不熟悉你使用的對象(事實上,你沒有提供任何關於它的信息)。但它聽起來像你只是想測試一個空字符串。 – 2011-06-07 12:19:02
我知道,衝的問題,我的不好。 :)更詳細地說,這是codeigniter的uri helper函數。因此,我們將前往site.com/edit_page/4,它將連接到數據庫中的頁面詳細信息。我可以問,if($ var)的影響是什麼,爲什麼它是懶惰的? – 2011-06-07 12:26:38
if (strlen($this->uri->segment('4')))
{}
@Shakti:[空](http://uk2.php.net/manual/en/function.empty.php)具有完全相同的問題是OP現在所做的,因爲它接受「0」爲「空」(在許多其他事情中)。實際上,請注意:「empty()與(boolean)var」相反。也就是說,'!empty'是OP已經做的事情。 – 2011-06-07 12:22:05