# 數據類型
[TOC]
PHP變量本身沒有類型,變量類型取決變量值的類型

數據類型知識點:
* [ ] 整數類型:整數類型可以為整數也可以為負整數,且整數可以用進制表示`以0開頭的整數都是進制的表達式`,且注意超過整數的最大與最小取值訪問返回結果都是為false
* [ ] 浮點數類型:浮點數類型可以為正數也可以為負數,也可以用科學小數表示`數字里面帶了E的數`,且注意浮點數的比較不準確,一般都是把小數轉變成整數再去比較
* [ ] 布爾值類型:布爾值類型只有二個值true和false分別表示真和假,且注意布爾值的true與false是不區分大小寫
* [ ] 空值類型:NULL類型只有一個值,就是不區分大小寫的常量NULL,且注意NULL表示這個變量沒有值
* [ ] 字符串類型:字符串類型用雙引號與單引號表示。**在雙引號內,變量能被解析。在單引號內,變量不會被解析**。在雙引號內,所有轉義字符都可以使用,在單引號只有`\'`能使用。雙引號的效率不如單引號,在PHP代碼中能用單引號全部都盡量用單引號。在雙引號中`{}`中的變量也可以被解析,單引號的效率要高于雙引號!
為了適合PHP混編,PHP專門提供了**定界符**來代替雙引號與單引號
```
<<<PHP
跟雙引號一樣效果,且注意'PHP'可以自定義想怎么寫都可以但是最后結尾的時候必須放在首行不能縮進!
在雙引號定界符中特殊字符不需要轉義
PHP;
<<<'PHP'
跟單引號一樣效果,單引號與雙引號定界符的區別就在于定義的時候在<<<頭中一個有單引號一個沒單引號
需要注意的就是結尾必須是首行不能縮進
PHP;
```
## 判斷數據類型
PHP為弱類型語言,我們定義變量不需要去申明變量類型,PHP會根據所賦的值確定變量類型。PHP也為我們提供檢查變量類型的函數
| 函數 | 含義 |
| :-: | :-: |
| is\_string() | 檢查變量是否是字符串 |
| is\_int() | 檢查變量是否是整數 |
| is\_float() | 檢查變量是否是浮點數 |
| is\_bool() | 檢查變量是否是布爾值 |
| is\_array() | 檢查變量是否是數組 |
| is\_object() | 檢查變量是否是對象 |
| is\_resource() | 檢查變量是否是資源 |
| is\_null() | 檢查變量是否是NULL |
| is\_numeric() | 檢查變量是否為數字或字符串 |
## 數據類型轉換
變量類型不一樣可以運算嘛?變量的類型**不一樣是不可以運算**的,在PHP中類型一致才可以進行運算。我們可以人為的轉變數據的類型,當然系統也會自動進行必要的數據類型轉換。
強制轉變類型:
* [ ] 轉換為布爾型:(bool) 或 (boolean)
* [ ] 轉換為字符型:(string) 或 strval()函數
* [ ] 轉換為整型:(int) 或 intval()函數
* [ ] 轉換為浮點數:(float)
* [ ] 轉換為數組:(array)
* [ ] 轉換為對象:(object)
自動轉變類型:
在使用不同類型變量進行運算的時候,PHP將根據需要自動嘗試必要的數據類型轉變。
* [ ] 如當我們使用`邏輯運算`的時候,左右兩邊要轉成`bool值`在進行運算
* [ ] 可以自動轉換成`false`的值:0,0.0,"",null,false,空數組
* [ ] bool值轉換成整型true為1false為0
* [ ] bool值轉換成字符串true為"1"false為"0"
* [ ] 字符串轉行為bool值`'0',''為false,其余都為true`
* [ ] null轉換成字符串為" ",
* [ ] 整數100轉換成字符串為“100”
* [ ] 浮點數轉換成整數去到小數部分
* [ ] 純字符串開頭的值轉換成整數為0,如果以數字開頭的字符串轉換成整數取數值部分如:“109px” 轉換成整數為109
## 計算機進制轉換
在PHP我們也可以對計算機進制進行轉換,進制單詞:decimal(十進制)、binary(二進制)、octal(八進制)、hex(十六進制)
* [ ] 十進制轉成二進制:decbin()
* [ ] 十進制轉成八進制:decoct()
* [ ] 十進制轉成十六進制:dechex()
* [ ] 二進制轉成十進制:bindec()
* [ ] 八進制轉成十進制:octdec()
* [ ] 十六進制轉成十進制:hexdec()
>[danger] 注意:如果將二進制轉成八進制,應該先轉成十進制,再轉成八進制
- 基礎
- 安裝PHP
- 語言基礎
- 變量
- 變量操作
- 超全局數組變量
- 變量作用域
- 變量傳值方式
- 常量
- 數據類型
- 運算符
- 流程控制
- 文件包含
- 錯誤處理
- 字符串操作
- 數組
- 函數
- 進階
- 面向對象
- 提高
- TP
- 安裝項目
- 框架基礎知識
- 命令創建模塊
- URL生命周期
- 路由操作
- Request請求類
- 參數綁定
- 依賴注入
- 模板操作
- 查詢操作
- 添加操作
- laravel
- ☆目錄結構
- CSRF攻擊
- ☆路由
- ☆控制器
- ☆請求類
- ☆視圖
- ☆模板繼承
- ☆表單驗證
- ☆DB類
- ☆模型
- ☆數據庫遷移
- 類型、修飾、索引
- ☆數據填充
- ☆數據分頁
- ☆session處理
- ☆中間件
- ☆緩存操作
- ☆文件上傳
- ☆接口操作
- ☆擴展插件
- restful
- 工作
- 工作記錄
- QQ登錄
- 新浪登錄
- 微信登錄
- sphinx搜索
- 數據庫
- MySQL
- ☆數據庫操作
- ☆數據表操作
- ☆數據的操作
- 待修改
- 優化
- 存儲引擎選擇
- 列表類型選擇
- 范式
- 慢日志查詢
- 精準時間記錄查詢
- 計劃任務 explain
- 索引
- 索與事務
- 查詢緩存
- 存儲過程
- 觸發器
- 分區
- 分表
- sphinx
- 讀寫分離
- 搜索優化
- 網站靜態化
- Memcache
- Mongodb
- Readis
- php使用redis
- 服務器
- Linux
- 目錄結構
- 常用命令
- VIM編輯器
- 用戶與用戶組
- 權限管理
- 運行級別
- 網絡模式
- ssh
- 軟件安裝
- 計劃任務
- Ubuntu
- 編譯PHP7.3
- 編譯MySQL
- 編譯Nginx
- apache虛擬機配置
- 安裝composer
- Nginx
- Git