[英]In PHP, if a variable does not have a value, why does isset() still return TRUE?
這是我的代碼:
<?php
$ja = '';
if(isset($ja))
echo "cool!";
?>
我得到一個“酷”! 在我的瀏覽器中運行這段簡單的代碼時。 我從php.net得知
isset —確定是否設置了變量並且不為NULL
好吧,在我的代碼中,我確實聲明了$ ja變量,但是沒有給它添加任何值,所以它不應該是“ NULL”嗎?
即使''似乎什么都沒有,它仍然有一個值(字符串末尾的NULL字符)。
isset()
檢查是否設置了變量,如果是,則設置為。 您可能需要先將$ ja設置為NULL,而不是將其設置為空字符串...或使用empty()
;)
空字符串仍然是一個值。 因此您確實給了它一個不為null的值- ''
是一個完全正常的字符串值。 也許你要! empty($ja)
! empty($ja)
Isset用於判斷是否設置了變量:
isset($notDefined) //false
$notDefined = 0;
isset($notDefined) //true
(假設之前未定義$ notDefined)
要檢查變量是否為空,可以使用if(empty($var))
或if($var==0)
您確實為$ ja添加了值-將其設置為空字符串。 空字符串不為null。
您可能會感到困惑的是,當您將空字符串和null轉換為布爾值時,在PHP中都將其評估為“ false”。
PHP的文檔非常清楚isset的用法。
isset函數確實確定對象是否具有值。 “ NULL”確實是賦予對象無值的唯一方法。 $ s =''只是不輸出任何內容。 BOOL values(true / false)表示是或否... 0只是將對象的int值設為0。
顧名思義,該函數檢查是否已設置某些變量,從某種意義上說它不是具有某個值,而在某種意義上說它已經被創建。 我認為這個名稱可能會有些混亂,因此我將帶一個JavaScript類比。 在javascript中檢查變量是否存在,請執行以下操作:
if (typeof(somevar) == "undefined")
alert("Sorry, the variable has not been set already")
else
alert("Congratulations, the variable has not been set")
因此,您正在執行的操作是創建變量$ja
,並且由於這樣做,該變量已經存在,因此已被設置。
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.