我在執行get_defined_constants()時意外地發現php有一個內部的常數,名稱為true,值為整數1,同樣也有名為false和null的常數。
難道php把true當作常數來處理了?它本來不應該是「值」麼?
不應該是一個資料型別為boolean的值麼?
我試著執行echo(true) ,瀏覽器輸出字元1,而我var_dump(true),輸出了bool(true),這不是顯然矛盾麼?
而且,true===1也是不成立的啊。 true==1才是成立的。
所以我想知道php到底是怎麼處理true false null的。
我在執行get_defined_constants()時意外地發現php有一個內部的常數,名稱為true,值為整數1,同樣也有名為false和null的常數。
難道php把true當作常數來處理了?它本來不應該是「值」麼?
不應該是一個資料型別為boolean的值麼?
我試著執行echo(true) ,瀏覽器輸出字元1,而我var_dump(true),輸出了bool(true),這不是顯然矛盾麼?
而且,true===1也是不成立的啊。 true==1才是成立的。
所以我想知道php到底是怎麼處理true false null的。
echo 輸入是字串,所以true有型別轉換進去。可以參考這裡
<code>Printing or echoing a FALSE boolean value or a NULL value results in an empty string: (string)TRUE //returns "1" (string)FALSE //returns "" echo TRUE; //prints "1" echo FALSE; //prints nothing!</code>
參考文件
歪樓。講個 C++ 的故事。
Windows API 有一個資料型態 BOOL
, 定義類似
<code class="cpp">typedef int BOOL;</code>
接著還有 TRUE
和 FALSE
宏,定義分別是
<code class="cpp">#define TRUE 1 #define FALSE 0</code>
C++ 本尊還有一個巨集 NULL
, 定義則是
<code class="cpp">#define NULL 0</code>
以及我懷疑 PHP 的做法是把 true
當做 boolean 類型的 1. 瞎猜的,錯了請盡情反對。