2011-06-07 39 views
0

什麼是寫作的最佳方式:檢查字符串是否設置,即使是0

if(!$this->uri->segment('4') && $this->uri->segment('4') != 0) 

這是太長篇大論。只需要檢查是否設置一個字符串,即使是0

+0

@Shakti:[空](http://uk2.php.net/manual/en/function.empty.php)具有完全相同的問題是OP現在所做的,因爲它接受「0」爲「空」(在許多其他事情中)。實際上,請注意:「empty()與(boolean)var」相反。也就是說,'!empty'是OP已經做的事情。 – 2011-06-07 12:22:05

回答

2

這太囉嗦了。只需要檢查是否設置了字符串,即使它是0.

如何檢查字符串的長度?

if (strlen($this->uri->segment('4')) > 0) 

編輯明確性,我已經添加> 0,所以它可能是一個多一點的描述是究竟你的期望。然而,這不是必需的。

+0

是的,我懷疑這將是解決方案。 – 2011-06-07 12:21:23

+0

你有一個錯字(正確的)。 – 2011-06-07 12:39:53

+0

@Tomalak你是對的,感謝修復,非常感謝。 – 2011-06-07 12:54:55

3

isset()

編輯:沒了,這不是一個變種的方法..

只需要檢查一個字符串設定,即使是0

if($this->uri->segment('4') != '') 

,但我不認爲這是你正在嘗試做的。

它取決於此方法返回的內容以及您嘗試完成的內容。

+0

-1函數調用的結果始終設置。 – 2011-06-07 12:14:19

+0

他說什麼:) – 2011-06-07 12:14:51

+0

是的,我注意到了..編輯答案。 – Rufinus 2011-06-07 12:17:55

2

無論如何,第一個子句並不是「正確的」,正如你通過編寫第二個子句發現的那樣。您還必須考慮FALSE和空字符串("")。代碼像if ($var)是懶惰的,通常,錯誤

測試變量的正確方法是PHP函數isset。但是,假設$this->uri->segment('4')是一個函數調用,結果將始終爲「set」。它永遠不會被設置。所以看起來你不太可能在這裏做很多事情。

你有什麼標準真的在找什麼?

也許你的功能segment返回null?所以寫if (!is_null($this->uri->segment('4')))

或者您正在尋找空串?所以寫if ($this->uri->segment('4') != "")

+0

我正在測試一個ID是否已經通過了uri的第四部分。這發生在我檢查數據庫中某個表的ID之前。 – 2011-06-07 12:17:43

+0

@Michael:我不熟悉你使用的對象(事實上,你沒有提供任何關於它的信息)。但它聽起來像你只是想測試一個空字符串。 – 2011-06-07 12:19:02

+0

我知道,衝的問題,我的不好。 :)更詳細地說,這是codeigniter的uri helper函數。因此,我們將前往site.com/edit_page/4,它將連接到數據庫中的頁面詳細信息。我可以問,if($ var)的影響是什麼,爲什麼它是懶惰的? – 2011-06-07 12:26:38

0
if (strlen($this->uri->segment('4'))) 
    {}