四種標題類型
boolean(布爾型)
integer(整型)
float(浮點型,也稱作 double)
string(字符串)
三種復合類型
array(數(shù)組)
object(對象)
callable(可調(diào)用)
兩種特殊類型
resource(資源)
NULL(無類型)
偽類型
mixed(混合類型)
number(數(shù)字類型)
callback(回調(diào)類型,又稱為 callable)
array|object(數(shù)組 | 對象類型)
void (無類型)
獲取變量的類型
gettype — 獲取變量的類型
string gettype ( mixed $var )
檢測變量的類型
is_array — 檢測變量是否是數(shù)組
is_bool — 檢測變量是否是布爾型
is_callable — 檢測參數(shù)是否為合法的可調(diào)用結構
is_double — is_float 的別名
is_float — 檢測變量是否是浮點型
is_int — 檢測變量是否是整數(shù)
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 — 檢測變量是否為數(shù)字或數(shù)字字符串
is_object — 檢測變量是否是一個對象
is_real — is_float 的別名
is_resource — 檢測變量是否為資源類型
is_scalar — 檢測變量是否是一個標量
is_string — 檢測變量是否是字符串
isset — 檢測變量是否設置
is_nan — 判斷是否為合法數(shù)值
變量類型轉換
settype — 設置變量的類型
bool settype ( mixed &$var , string $type )
“boolean” (或為“bool”,從 PHP 4.2.0 起)type取值
integer” (或為“int”,從 PHP 4.2.0 起)
float” (只在 PHP 4.2.0 之后可以使用,對于舊版本中使用的“double”現(xiàn)已停用)
string"
array"
object"
null” (從 PHP 4.2.0 起)
類型強制轉換
(int), (integer) - 轉換為整形 integer
(bool), (boolean) - 轉換為布爾類型 boolean
(float), (double), (real) - 轉換為浮點型 float
(string) - 轉換為字符串 string
(array) - 轉換為數(shù)組 array
(object) - 轉換為對象 object
(unset) - 轉換為 NULL (PHP 5)
Boolean 布爾類型
這是最簡單的類型。boolean 表達了真值,可以為 TRUE 或 FALSE。
轉換為布爾值
要明確地將一個值轉換成 boolean,用 (bool) 或者 (boolean) 來強制轉換。
但是很多情況下不需要用強制轉換,因為當運算符,函數(shù)或者流程控制結構需要一個 boolean 參數(shù)時,該值會被自動轉換。
當轉換為 boolean 時,以下值被認為是 FALSE:
布爾值 FALSE 本身
整型值 0(零)
浮點型值 0.0(零)
空字符串,以及字符串 "0"
不包括任何元素的數(shù)組
特殊類型 NULL(包括尚未賦值的變量)
從空標記生成的 SimpleXML 對象
-1 和其它非零值(不論正負)一樣,被認為是 TRUE!
Integer 整型
整型值可以使用十進制,十六進制,八進制或二進制表示,前面可以加上可選的符號(- 或者 +)。
整數(shù)溢出
如果給定的一個數(shù)超出了 integer 的范圍,將會被解釋為 float。
同樣如果執(zhí)行的運算結果超出了 integer 范圍,也會返回 float。
布爾值轉換成整型
FALSE 將產(chǎn)生出 0(零),TRUE 將產(chǎn)生出 1(壹)。
浮點型轉成整型
當從浮點數(shù)轉換成整數(shù)時,將向下取整。
echo (int)3.12; # 輸出3
字符串轉成整型
Float 浮點型
浮點型(也叫浮點數(shù) float,雙精度數(shù) double 或實數(shù) real)可以用以下任一語法定義:
浮點數(shù)的精度
所以永遠不要相信浮點數(shù)結果精確到了最后一位,也永遠不要比較兩個浮點數(shù)是否相等。
如果確實需要更高的精度,應該使用任意精度數(shù)學函數(shù)或者 gmp 函數(shù)。
echo floor((0.1+0.7)*10); # 輸出7
String 字符串
一個字符串 string 就是由一系列的字符組成,其中每個字符等同于一個字節(jié)。
這意味著 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 <<
nowdoc類似于單引號不會解析變量
$name = 'Hello';echo <<<'EOD' 里面的變量$name不會解析。 EOD;
轉換成字符串
一個值可以通過在其前面加上 (string) 或用 strval() 函數(shù)來轉變成字符串。
一個布爾值 boolean 的 TRUE 被轉換成 string 的 "1"。Boolean 的 FALSE 被轉換成 ""(空字符串)。
這種轉換可以在 boolean 和 string 之間相互進行。
數(shù)組 array 總是轉換成字符串 "Array"。
資源 resource 總會被轉變成 "Resource id #1" 這種結構的字符串。
NULL 總是被轉變成空字符串。
字符串轉成數(shù)值
Array數(shù)組
PHP 中的數(shù)組實際上是一個有序映射。映射是一種把 values 關聯(lián)到 keys 的類型。
定義數(shù)組 array()
可以用 array() 語言結構來新建一個數(shù)組。它接受任意數(shù)量用逗號分隔的 鍵(key) => 值(value)對。
"bar", "bar" => "foo", );// 自 PHP 5.4 起$array = [ "foo" => "bar", "bar" => "foo", ];?>key 會有如下的強制轉換
包含有合法整型值的字符串會被轉換為整型。例如鍵名 "8" 實際會被儲存為 8。但是 "08" 則不會強制轉換,因為其不是一個合法的十進制數(shù)值。
浮點數(shù)也會被轉換為整型,意味著其小數(shù)部分會被舍去。例如鍵名 8.7 實際會被儲存為 8。
布爾值也會被轉換成整型。即鍵名 true 實際會被儲存為 1 而鍵名 false 會被儲存為 0。
Null 會被轉換為空字符串,即鍵名 null 實際會被儲存為 ""。
數(shù)組和對象不能被用為鍵名。堅持這么做會導致警告:Illegal offset type。
數(shù)組類型
數(shù)字索引數(shù)組(下標為數(shù)字)
關聯(lián)數(shù)組(鍵值對)
數(shù)組遍歷
$arr = ['one'=>'First', 'two'=>'Second'];foreach ($arr as $key => $value) { echo '$key=' . "$key" . "
"; echo '$value=' . "$value" . "
"; }
Object 對象
對象初始化
要創(chuàng)建一個新的對象 object,使用 new 語句實例化一個類:
do_foo();?>
轉換為對象
如果將一個對象轉換成對象,它將不會有任何變化。
如果其它任何類型的值被轉換成對象,將會創(chuàng)建一個內(nèi)置類 stdClass 的實例。
'foo'); var_dump(isset($obj->{'1'})); // outputs 'bool(false)' var_dump(key($obj)); // outputs 'int(1)'?>對于其他值,會包含進成員變量名 scalar。
scalar; // outputs 'ciao'?>
Resource 資源類型
資源 resource 是一種特殊變量,保存了到外部資源的一個引用。
資源是通過專門的函數(shù)來建立和使用的。
轉換為資源
由于資源類型變量保存有為打開文件、數(shù)據(jù)庫連接、圖形畫布區(qū)域等的特殊句柄,因此將其它類型的值轉換為資源沒有意義。
釋放資源
PHP也有垃圾自動回收機制,可以自動檢測到一個資源不再被引用了。
持久數(shù)據(jù)庫連接比較特殊,它們不會被垃圾回收系統(tǒng)銷毀。
NULL
特殊的 NULL 值表示一個變量沒有值。NULL 類型唯一可能的值就是 NULL。
在下列情況下一個變量被認為是 NULL
被賦值為 NULL。
尚未被賦值。
被 unset()。
轉換到 NULL
使用 (unset) $var 將一個變量轉換為 null 將不會刪除該變量或 unset 其值。僅是返回 NULL 值而已。
mixed
mixed 說明一個參數(shù)可以接受多種不同的(但不一定是所有的)類型。
例如 gettype() 可以接受所有的 PHP 類型,str_replace() 可以接受字符串和數(shù)組。
number
number 說明一個參數(shù)可以是 integer 或者 float。
array|object
array|object 意思是參數(shù)既可以是 array 也可以是 object。
void
void 作為返回類型意味著函數(shù)的返回值是無用的。
void 作為參數(shù)列表意味著函數(shù)不接受任何參數(shù)。
php如何聲明定義數(shù)組
索引數(shù)組
默認下標或帶有數(shù)字索引的數(shù)組
關聯(lián)數(shù)組
鍵名不為純數(shù)字帶有指定值如標識符的數(shù)組
有關鍵值的說明
鍵(key)可以是一個整數(shù)integer或字符串string
值(value)可以是任意類型的值
直接為元素賦值
$myarr['Q'] = "Q";$myarr[] = "A";$myarr[] = "B";$myarr[2] = "B"; print_r($myarr);#在php中數(shù)據(jù)可以動態(tài)改變長度。并且會默認按下標進行賦值。使用array函數(shù)進行賦值
#一維數(shù)組$myarr = array("A","B","C");foreach($myarr as $key => $value){ echo "key=".$key; echo "value=".$value; echo " "; }#多維數(shù)組,遞歸輸出數(shù)組值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)."維數(shù)組";
php如何調(diào)用數(shù)組方法
array_keys()返回數(shù)組中所有的鍵名
$myarr = array("A","B","C"); print_r(array_keys($myarr));array_values()返回數(shù)組中所有的值
$myarr = array("A","B","C"); print_r(array_values($myarr));
php如何對數(shù)組查、增、改、刪
查array_search()數(shù)組值查找
#返回查找到的元素下標$myarr = array("A","B","C");echo array_search("B",$myarr);增array_push()隊尾添加數(shù)據(jù)
#返回增加后數(shù)組的大小$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()
#返回刪除重復元素后的數(shù)組$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如何進行數(shù)據(jù)類型轉換
類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)獲取變量整數(shù)、浮點、字符串值
#第二種轉換方式: intval() floatval() strval()2.$str="123.9abc";3.$int=intval($str); //轉換后數(shù)值:1234.$float=floatval($str); //轉換后數(shù)值:123.95.$str=strval($float); //轉換后字符串:"123.9"使用settype()封裝函數(shù)
#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”現(xiàn)已停用)"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