PHP 數據類型

PHP 數據類型


四種標題類型

  • boolean(布爾型)
  • integer(整型)
  • float(浮點型,也稱做 double)
  • string(字符串)

三種複合類型

  • array(數組)
  • object(對象)
  • callable(可調用)

兩種特殊類型

  • resource(資源)
  • NULL(無類型)

僞類型

  • mixed(混合類型)
  • number(數字類型)
  • callback(回調類型,又稱爲 callable)
  • array|object(數組 | 對象類型)
  • void (無類型)

獲取變量的類型

gettype — 獲取變量的類型php

string gettype ( mixed $var ) 

檢測變量的類型

  • is_array — 檢測變量是不是數組
  • is_bool — 檢測變量是不是布爾型
  • is_callable — 檢測參數是否爲合法的可調用結構
  • is_double — is_float 的別名
  • is_float — 檢測變量是不是浮點型
  • is_int — 檢測變量是不是整數
  • is_integer — is_int 的別名
  • is_iterable — Verify that the contents of a variable is an iterable value
  • is_long — is_int 的別名
  • is_null — 檢測變量是否爲 NULL
  • is_numeric — 檢測變量是否爲數字或數字字符串
  • is_object — 檢測變量是不是一個對象
  • is_real — is_float 的別名
  • is_resource — 檢測變量是否爲資源類型
  • is_scalar — 檢測變量是不是一個標量
  • is_string — 檢測變量是不是字符串
  • isset — 檢測變量是否設置
  • is_nan — 判斷是否爲合法數值

變量類型轉換

settype — 設置變量的類型python

bool settype ( mixed &$var , string $type ) 
參數 解釋
var 要轉換的變量。
type 轉換後的數據類型

type取值

  • 「boolean」 (或爲「bool」,從 PHP 4.2.0 起)
  • 「integer」 (或爲「int」,從 PHP 4.2.0 起)
  • 「float」 (只在 PHP 4.2.0 以後可使用,對於舊版本中使用的「double」現已停用)
  • "string"
  • "array"
  • "object"
  • 「null」 (從 PHP 4.2.0 起)

類型強制轉換

  • (int), (integer) - 轉換爲整形 integer
  • (bool), (boolean) - 轉換爲布爾類型 boolean
  • (float), (double), (real) - 轉換爲浮點型 float
  • (string) - 轉換爲字符串 string
  • (array) - 轉換爲數組 array
  • (object) - 轉換爲對象 object
  • (unset) - 轉換爲 NULL (PHP 5)

Boolean 布爾類型

這是最簡單的類型。boolean 表達了真值,能夠爲 TRUE 或 FALSE。laravel

轉換爲布爾值

要明確地將一個值轉換成 boolean,用 (bool) 或者 (boolean) 來強制轉換。git

可是不少狀況下不須要用強制轉換,由於當運算符,函數或者流程控制結構須要一個 boolean 參數時,該值會被自動轉換。面試

當轉換爲 boolean 時,如下值被認爲是 FALSE:正則表達式

  • 布爾值 FALSE 自己
  • 整型值 0(零)
  • 浮點型值 0.0(零)
  • 空字符串,以及字符串 "0"
  • 不包括任何元素的數組
  • 特殊類型 NULL(包括還沒有賦值的變量)
  • 從空標記生成的 SimpleXML 對象

-1 和其它非零值(不論正負)同樣,被認爲是 TRUE!redis

Integer 整型

整型值可使用十進制,十六進制,八進制或二進制表示,前面能夠加上可選的符號(- 或者 +)。docker

<?php $a = 1234; // 十進制數 $a = -123; // 負數 $a = 0123; // 八進制數 (等於十進制 83) $a = 0x1A; // 十六進制數 (等於十進制 26) $a = 0b11111111; // 二進制數字 (等於十進制 255) ?> 

整數溢出

若是給定的一個數超出了 integer 的範圍,將會被解釋爲 float。數據庫

一樣若是執行的運算結果超出了 integer 範圍,也會返回 float。ubuntu

布爾值轉換成整型

FALSE 將產生出 0(零),TRUE 將產生出 1(壹)。

浮點型轉成整型

當從浮點數轉換成整數時,將向下取整。

echo (int)3.12; # 輸出3 

字符串轉成整型

<?php $foo = 1 + "10.5"; // $foo is float (11.5) $foo = 1 + "-1.3e3"; // $foo is float (-1299) $foo = 1 + "bob-1.3e3"; // $foo is integer (1) $foo = 1 + "bob3"; // $foo is integer (1) $foo = 1 + "10 Small Pigs"; // $foo is integer (11) $foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2) $foo = "10.0 pigs " + 1; // $foo is float (11) $foo = "10.0 pigs " + 1.0; // $foo is float (11) ?> 

Float 浮點型

浮點型(也叫浮點數 float,雙精度數 double 或實數 real)能夠用如下任一語法定義:

<?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?> 

浮點數的精度

因此永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。

若是確實須要更高的精度,應該使用任意精度數學函數或者 gmp 函數。

echo floor((0.1+0.7)*10); # 輸出7 

String 字符串

一個字符串 string 就是由一系列的字符組成,其中每一個字符等同於一個字節。

這意味着 PHP 只能支持 256 的字符集,所以不支持 Unicode 。

string 最大能夠達到 2GB。

4種方式表達

  • 單引號
  • 雙引號
  • heredoc 語法結構
  • nowdoc 語法結構(自 PHP 5.3.0 起)

單引號

不像雙引號和 heredoc 語法結構,在單引號字符串中的變量和特殊字符的轉義序列將不會被替換。

雙引號

用雙引號定義的字符串最重要的特徵是變量會被解析。

轉義字符 含義
\n 換行(ASCII 字符集中的 LF 或 0x0A (10))
\r 回車(ASCII 字符集中的 CR 或 0x0D (13))
\t 水平製表符(ASCII 字符集中的 HT 或 0x09 (9))
\v 垂直製表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起)
\e Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起)
\f 換頁(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起)
\ 反斜線
\$ 美圓標記
\" 雙引號
[0-7]{1,3} 符合該正則表達式序列的是一個以八進制方式來表達的字符
\x[0-9A-Fa-f]{1,2} 符合該正則表達式序列的是一個以十六進制方式來表達的字符

heredoc相似於雙引號能夠解析變量

```php
$name = 'Hello'; echo <<<EOD 裏面的變量$name會解析。 EOD; 

nowdoc相似於單引號不會解析變量

$name = 'Hello'; echo <<<'EOD' 裏面的變量$name不會解析。 EOD; 

轉換成字符串

一個值能夠經過在其前面加上 (string) 或用 strval() 函數來轉變成字符串。

一個布爾值 boolean 的 TRUE 被轉換成 string 的 "1"。Boolean 的 FALSE 被轉換成 ""(空字符串)。

這種轉換能夠在 boolean 和 string 之間相互進行。

數組 array 老是轉換成字符串 "Array"。

資源 resource 總會被轉變成 "Resource id #1" 這種結構的字符串。

NULL 老是被轉變成空字符串。

字符串轉成數值

<?php $foo = 1 + "10.5"; // $foo is float (11.5) $foo = 1 + "-1.3e3"; // $foo is float (-1299) $foo = 1 + "bob-1.3e3"; // $foo is integer (1) $foo = 1 + "bob3"; // $foo is integer (1) $foo = 1 + "10 Small Pigs"; // $foo is integer (11) $foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2) $foo = "10.0 pigs " + 1; // $foo is float (11) $foo = "10.0 pigs " + 1.0; // $foo is float (11) ?> 

Array數組

PHP 中的數組其實是一個有序映射。映射是一種把 values 關聯到 keys 的類型。

定義數組 array()

能夠用 array() 語言結構來新建一個數組。它接受任意數量用逗號分隔的 鍵(key) => 值(value)對。

<?php $array = array( "foo" => "bar", "bar" => "foo", ); // 自 PHP 5.4 起 $array = [ "foo" => "bar", "bar" => "foo", ]; ?> 

key 會有以下的強制轉換

  • 包含有合法整型值的字符串會被轉換爲整型。例如鍵名 "8" 實際會被儲存爲 8。可是 "08" 則不會強制轉換,由於其不是一個合法的十進制數值。
  • 浮點數也會被轉換爲整型,意味着其小數部分會被捨去。例如鍵名 8.7 實際會被儲存爲 8。
  • 布爾值也會被轉換成整型。即鍵名 true 實際會被儲存爲 1 而鍵名 false 會被儲存爲 0。
  • Null 會被轉換爲空字符串,即鍵名 null 實際會被儲存爲 ""。
  • 數組和對象不能被用爲鍵名。堅持這麼作會致使警告:Illegal offset type。

數組類型

  • 數字索引數組(下標爲數字)
  • 關聯數組(鍵值對)

數組遍歷

$arr = ['one'=>'First', 'two'=>'Second']; foreach ($arr as $key => $value) { echo '$key=' . "$key" . "<br>"; echo '$value=' . "$value" . "<br>"; } 

Object 對象

對象初始化

要建立一個新的對象 object,使用 new 語句實例化一個類:

<?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?> 

轉換爲對象

若是將一個對象轉換成對象,它將不會有任何變化。

若是其它任何類型的值被轉換成對象,將會建立一個內置類 stdClass 的實例。

<?php $obj = (object) array('1' => 'foo'); var_dump(isset($obj->{'1'})); // outputs 'bool(false)' var_dump(key($obj)); // outputs 'int(1)' ?> 

對於其餘值,會包含進成員變量名 scalar。

<?php $obj = (object) 'ciao'; echo $obj->scalar; // outputs 'ciao' ?> 

Resource 資源類型

資源 resource 是一種特殊變量,保存了到外部資源的一個引用。

資源是經過專門的函數來創建和使用的。

轉換爲資源

因爲資源類型變量保存有爲打開文件、數據庫鏈接、圖形畫布區域等的特殊句柄,所以將其它類型的值轉換爲資源沒有意義。

釋放資源

PHP也有垃圾自動回收機制,能夠自動檢測到一個資源再也不被引用了。

持久數據庫鏈接比較特殊,它們不會被垃圾回收系統銷燬。

NULL

特殊的 NULL 值表示一個變量沒有值。NULL 類型惟一可能的值就是 NULL。

在下列狀況下一個變量被認爲是 NULL

  • 被賦值爲 NULL。
  • 還沒有被賦值。
  • 被 unset()。

轉換到 NULL

使用 (unset) $var 將一個變量轉換爲 null 將不會刪除該變量或 unset 其值。僅是返回 NULL 值而已。

mixed

mixed 說明一個參數能夠接受多種不一樣的(但不必定是全部的)類型。

例如 gettype() 能夠接受全部的 PHP 類型,str_replace() 能夠接受字符串和數組。

number

number 說明一個參數能夠是 integer 或者 float。

array|object

array|object 意思是參數既能夠是 array 也能夠是 object。

void

void 做爲返回類型意味着函數的返回值是無用的。

void 做爲參數列表意味着函數不接受任何參數。

php如何聲明定義數組

  • 索引數組

默認下標或帶有數字索引的數組

  • 關聯數組

鍵名不爲純數字帶有指定值如標識符的數組

  • 有關鍵值的說明

鍵(key)能夠是一個整數integer或字符串string

值(value)能夠是任意類型的值

  • 直接爲元素賦值
$myarr['Q'] = "Q"; $myarr[] = "A"; $myarr[] = "B"; $myarr[2] = "B"; print_r($myarr); #在php中數據能夠動態改變長度。而且會默認按下標進行賦值。 
  • 使用array函數進行賦值
#一維數組 $myarr = array("A","B","C"); foreach($myarr as $key => $value){ echo "key=".$key; echo "value=".$value; echo " "; } #多維數組,遞歸輸出數組值 function myfun(array $myarr){ foreach($myarr as $key => $value){ if(is_array($value)){ myfun($value); }else{ echo "key=".$key; echo "value=".$value; echo " "; } } } $myarr = array("A"=>array("1"=>array("a","b","c"),"2","3"),"B","C"); echo myfun($myarr)."維數組"; 

php如何調用數組方法

  • array_keys()返回數組中全部的鍵名
$myarr = array("A","B","C"); print_r(array_keys($myarr)); 
  • array_values()返回數組中全部的值
$myarr = array("A","B","C"); print_r(array_values($myarr)); 

php如何對數組查、增、改、刪

  • 查array_search()數組值查找
#返回查找到的元素下標 $myarr = array("A","B","C"); echo array_search("B",$myarr); 
  • 增array_push()隊尾添加數據
#返回增長後數組的大小 $myarr = array("A","B","C"); echo array_push($myarr,"D"); print_r($myarr); 
  • 改array_chunk()一維轉多維
$myarr = array("A","B","C"); $myarr = array_chunk($myarr,2,true); print_r($myarr); 
  • 刪array_unique()
#返回刪除重複元素後的數組 $myarr = array("A","B","C","B"); print_r(array_unique($myarr)); #unset無返回值 $myarr = array("A","B","C"); unset($myarr[2]); 
  • 合併array_merge()
$myarr1 = array("one","two"); $myarr2 = array("three","four"); $myarr3 = array_merge($myarr1, $myarr2); print_r($myarr3); 

php如何進行數據類型轉換

  • 類C強制轉換
#第一種轉換方式: (int) (bool) (float) (string) (array) (object) 2.$num1=3.14; 3.$num2=(int)$num1; 4.var_dump($num1); //輸出float(3.14) 5.var_dump($num2); //輸出int(3) 
  • 獲取變量整數、浮點、字符串值
#第二種轉換方式: intval() floatval() strval() 2.$str="123.9abc"; 3.$int=intval($str); //轉換後數值:123 4.$float=floatval($str); //轉換後數值:123.9 5.$str=strval($float); //轉換後字符串:"123.9" 
  • 使用settype()封裝函數
#bool settype ( mixed &$var , string $type ) type 的可能值爲: 「boolean」 (或爲「bool」,從 PHP 4.2.0 起) 「integer」 (或爲「int」,從 PHP 4.2.0 起) 「float」 (只在 PHP 4.2.0 以後可使用,對於舊版本中使用的「double」現已停用) "string" "array" "object" 「null」 (從 PHP 4.2.0 起) 2.$num4=12.8; 3.$flg=settype($num4,"int"); 4.var_dump($flg); //輸出bool(true) 5.var_dump($num4); //輸出int(12) 

php如何處理進制轉換

  • 十進制轉二進制decbin()
echo decbin(12); //輸出 1100 
  • 十進制轉八進制 decoct()
echo decoct(15); //輸出 17 
  • 十進制轉十六進制 dechex()
echo dechex(10); //輸出 a 
  • 二進制轉十六制進 bin2hex()
$binary = "11111001"; $hex = dechex(bindec($binary)); echo $hex;//輸出f9 
  • 二進制轉十制進 bindec()
echo bindec('110011'); //輸出 51 
  • 八進制轉十進制 octdec()
echo octdec('77'); //輸出 63 
  • 十六進制轉十進制 hexdec()
echo hexdec("F"); //輸出 15 
  • 任意進制轉換 base_convert()
$hexadecimal = 'A37334'; echo base_convert($hexadecimal, 16, 2);//輸出 101000110111001100110100 

php如何處理優先級的問題

運算符優先級指定了兩個表達式綁定得有多"緊密"。可使用括號來強制改變優先級。

若是運算符優先級相同,則使用從左到右的左聯順序。

圖片

自加、自減、三目運算符

#自加 $a=10; echo $a++; //先用再加,最後結果爲10 echo ++$a; //先加再用,最後結果爲11 $a = 10; $b = $a+ ++++$a; echo $a; //結果爲12 echo " "; echo $b; //結果爲22 #結合性致使的問題(++的優先級比+的高,且爲右結合)




衿華客

php 教程

  1. PHP簡介
  2. PHP安裝
  3. PHP語法
  4. PHP數據類型
  5. PHP變量
  6. PHP運算符
  7. PHP流程控制
  8. PHP函數
  9. PHP類與對象
  10. PHP字符串
  11. PHP正則表達示
  12. PHP文件
  13. PHP圖形圖像
  14. PHPXML
  15. PHP會話緩存
  16. PHP異常處理
  17. PHP數據庫
  18. PHP日期時間戳
  19. PHP代碼風格規範

server 環境

  1. ubuntu入門
  2. docker入門
  3. git入門
  4. iterm入門

frame 框架

  1. laravel入門
  2. dingo入門
  3. JWT入門
  4. Laravel框架關鍵技術解析
  5. laravel則修筆記
  6. rpc入門
  7. rabbitmq入門
  8. opencc多國語言
  9. laravel兄弟連筆記
  10. laravel進階

case 實例

  1. php面試題筆記
  2. python圖標提取
  3. 字幕亂碼問題
  4. 支付寶接口調用
  5. laravel開發筆記

db 數據庫

  1. elasticsearch入門
  2. 數據庫操做
  3. 數據庫設計
  4. redis入門

help

相關文章
相關標籤/搜索