一、數據類型
三個數據類型(標量、複合、特殊)
- 標量類型:
- 整型(int)
- 浮點型(float)
- 字符串(string)
- 布爾型(boolean)
- 複合類型:
- 對象(object)
- 數組(array)
- 特殊類型:
- 資源(resource)
- NULL
數據類型中的注意事項:
浮點型:浮點類型不能運用於比較運算中,精確的來說,不能用於相等的判斷中。
$a = 0.1;
$b = 0.7;
if ($a + $b == 0.8) { // false = 0.79999....
}
由於
0.1
和0.7
在進行計算的時候,是交給 CPU 進行計算的,CPU在計算的時候,只能將其轉爲二進制。在轉換爲二進制的時候,會有一定的損耗,會轉爲010101...
的格式。對於0.1
和0.7
來說,0.1
在轉換的時候,會轉換爲010101...
的格式,就會有損耗。有損耗的話, 我們0.1 + 0.7 = 0.799999...
,最終是得不到0.8
了, 損耗了0.00000.....1
。因此,浮點類型不能用於精確的相等的判斷。
1、 布爾型:需掌握 FALSE的七種情況
- 整型 0;
- 浮點 0.0;
- 空字符串 ‘’;
- 零字符串 ‘0’;
- 布爾型 false;
- 空數組 array();
- NULL
2、 數組類型:考察 超全局數組
$GLOBALS; // 包含了後面的所有內容
$_GET
$_POST
$_REQUEST; // 包含了 $_GET、$_POST、$_COOKIE,【$_REQUEST儘量少用,它相當於一個萬能鑰匙,既可以接收 get/post/cookie,它的安全性偏低】
$_SESSION;
$_COOKIE;
$_SERVER;
$_FILES;
$_ENV;
3、$_SERVER
重點記憶:
$_SERVER['SERVER_ADDR']; // 服務器端的IP地址【重點考察】
$_SERVER['SERVER_NAME']; // 服務器名稱
$_SERVER['REQUEST_TIME']; // 啓動時間
$_SERVER['QUERY_STRING']; // 問號後面的內容(有可能爲空)
$_SERVER['HTTP_REFERER']; // 上級請求的頁面(從哪過來的,也可能爲空,從網址請求過來的時候,爲空)
$_SERVER['HTTP_USER_AGENT']; // 返回頭信息中user_agent的信息
$_SERVER['REMOTE_ADDR']; // 客戶端的IP地址【重點考察】
$_SERGER['REQUEST_URI']; // 比如我們請求的是 index.php,此時 URI爲 /index.php
$_SERVER['PATH_INFO']; // 用來處理路由或處理框架中路由的功能(抓取的是URL地址中的路徑部分,既不是前面的腳本的名稱,也不是後面的 $_SERVER['QUEST_STRING'])【如:訪問 http://www.imooc.com/index.php/use/reg?status=ghost,則抓取的是 use/reg?status=ghost】
4、NULL:三種情況
- 直接賦值爲NULL;
- 未定義的變量;
- unset銷燬的變量;
二、 常量
1、 定義
- const 更快,是語言結構;可以定義類常量;
- define 是函數;不能定義類常量;
注:常量一經定義,不能被修改,不能被刪除;
2、預定義常量
__FILE__; // 返回文件的路徑名 和 文件的名稱
__LINE__; // 所在行的行號
__DIR__; // 所在目錄
__FUNCTION__; // 所在函數體中的函數名稱
__CLASS__; // 類名
__TRAIT__; // trait的名稱(PHP 5.4起的一個特性)
__METHOD__; // 類名 + 方法名
__NAMESPACE__; // namespace的名稱