PHP 提供了 isset() 函數來判斷變數是否存在。但是,正如文件中所提到的,它無法區分未設定的變數和設定為 NULL 的變數。
有限制的替代方法
克服此限制的一種嘗試是:
<code class="php">if (isset($v) || @is_null($v)) {...}</code>
但是is_null() 也面臨著類似的問題,對於未設定的變數傳回TRUE。此外,@($v === NULL) 的行為與@is_null($v) 相同,使其無法使用。
可靠的解決方案:array_key_exists()
For檢查變數是否存在的可靠方法是考慮 array_key_exists()。當應用於全域變數時,它可以有效地區分不存在的變數和設定為 NULL 的變數。
示範差異
考慮以下範例:
<code class="php">$a = NULL; var_dump(array_key_exists('a', $GLOBALS)); // TRUE var_dump(array_key_exists('b', $GLOBALS)); // FALSE</code>
輸出顯示array_key_exists() 準確地辨識了$a 的存在,即使它設定為NULL。
結論
而 isset() 和is_null() 為變數存在性測試提供部分支持,array_key_exists() 提供更精確、更全面的解決方案。此方法可以正確區分全域和局部範圍內未設定的變數和設定為 NULL 的變數。
以上是如何可靠地測試 PHP 中的變數是否存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!