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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-10-10 11:56:26
原創
2073 人瀏覽過

我在執行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. 瞎猜的,錯了請盡情反對。

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼學好php
來自於 1970-01-01 08:00:00
0
0
0
PHP擴充intl
來自於 1970-01-01 08:00:00
0
0
0
php數據獲取?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板