快速的問題。我所看到的教程,簡單的if語句是這樣寫的:PHP - 如果isset速記
if($vest) echo $vest->naslov
但是,當我把它寫這樣,我得到一個錯誤未定義的變量:背心,我必須寫代碼舊的方式方法:
if(isset($vest)) echo $vest->naslov
是否有在的php.ini文件調節這個任何設置?目前我在Ubuntu上使用LAMP(最新版本)。
快速的問題。我所看到的教程,簡單的if語句是這樣寫的:PHP - 如果isset速記
if($vest) echo $vest->naslov
但是,當我把它寫這樣,我得到一個錯誤未定義的變量:背心,我必須寫代碼舊的方式方法:
if(isset($vest)) echo $vest->naslov
是否有在的php.ini文件調節這個任何設置?目前我在Ubuntu上使用LAMP(最新版本)。
您可以將error_reporting
降到E_ALL^E_NOTICE
,但這實際上是一個不好的做法,可能導致很多難以追蹤的錯誤。如果$vest
是一個錯字,你不會知道,你的條件將永遠不會工作。
而是嘗試構建應用程序,以便始終知道哪些變量已定義,哪些未定義。然後,你可以使用速記版本,不用擔心。
Undefined variable: vest
錯誤表示變量$vest
未被識別。 isset($vest)
不會產生錯誤的原因是因爲isset()
檢查是否已經設置了$vest
。因此,如果(isset($ vest))將對返回值isset($vest)
執行布爾檢查。
如果你只是使用if($vest)
,php會假設已經設置了$vest
(實際上,$vest
仍然未定義)並且它執行布爾檢查操作。
你有E_STRICT
上,如果你沒有聲明變量之前檢查它們,它會抱怨。在php.ini
關閉E_STRICT
您可以解決這個問題,但更好的想法是簡單地提前聲明變量 - 只是這樣做,在你的函數的頂部:其餘前
$vest = null;
你的邏輯。這是一個很好的做法,因爲它會迫使你以一種更接近實際的方式考慮你的程序執行的方式。
您可以關閉錯誤報告級別並且忽略的錯誤,但那會是危險的編程實踐。
當你輸入:if($vest)
,你真的是$vest==null
或$vest==''
或$vest===''
或isempty($vest)
或$vest===true
或isset($背心)`?
if語句有很多用法;你應該在代碼中清楚你在做什麼。初始化腳本頂部的變量真的很難嗎?
我認爲最好的做法是將變量聲明爲負數狀態,然後 - 如果它們未設置,或者它們設置爲false,則速記if
將按照您的意圖進行操作。
忽略錯誤是不好的(他們是有原因的,並且你的代碼會更具可讀性,因此可維護)。
if($foo)
和if(isset($foo))
不是相同的東西,不應該互換使用。
if($foo)
檢查是否$foo
的計算結果爲true。另一種書寫方式是:if((bool) $foo === true)
。因此,如果$foo
未定義,則會收到來自PHP的通知。
與其像一些人建議的那樣關閉通知,不如以正確的方式編寫代碼。要檢查是否定義了$foo
,請始終使用isset()
。
爲了'if'的目的將它們聲明爲null。另外,大多數其他目的。 –
我通常會做'null'myself,但是不知道上下文(即變量的後面的用法),他們正在使用它..讓它爲它們開放。 –