首頁 >後端開發 >php教程 >php有一個預先定義的常數true,值為整數1,這該如何理解?

php有一個預先定義的常數true,值為整數1,這該如何理解?

WBOY
WBOY原創
2016-10-10 11:56:262050瀏覽

我在執行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>

接著還有 TRUEFALSE 宏,定義分別是

<code class="cpp">#define TRUE 1
#define FALSE 0</code>

C++ 本尊還有一個巨集 NULL, 定義則是

<code class="cpp">#define NULL 0</code>

以及我懷疑 PHP 的做法是把 true 當做 boolean 類型的 1. 瞎猜的,錯了請盡情反對。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn