簡體   English   中英

在PHP中,如果變量沒有值,為什么isset()仍返回TRUE?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM