【PHP面試題】數據類型及常量(包含 7種false的情況、超全局數組、預定義常量、獲取服務器信息函數)

一、數據類型

三個數據類型(標量、複合、特殊)

  • 標量類型:
    • 整型(int)
    • 浮點型(float)
    • 字符串(string)
    • 布爾型(boolean)
  • 複合類型:
    • 對象(object)
    • 數組(array)
  • 特殊類型:
    • 資源(resource)
    • NULL

數據類型中的注意事項:

浮點型:浮點類型不能運用於比較運算中,精確的來說,不能用於相等的判斷中

$a = 0.1;
$b = 0.7;
if ($a + $b == 0.8) { // false = 0.79999....
    
}

由於 0.10.7 在進行計算的時候,是交給 CPU 進行計算的,CPU在計算的時候,只能將其轉爲二進制。在轉換爲二進制的時候,會有一定的損耗,會轉爲 010101...的格式。對於 0.10.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的名稱













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章