数据类型,php类型转换以及类型转换的辨识

一,PHP变量的8个类型

部分摘自PHP: 类型 –
Manual

数据类型,php类型转换以及类型转换的辨识。PHP 数据类型


PHP 数据类型


各类标量类型:

连带链接

种种标题类型

  • boolean(布尔型)
  • integer(整型)
  • float(浮点型,也称作 double)
  • string(字符串)

八种标题类型

  • boolean(布尔型)
  • integer(整型)
  • float(浮点型,也称作 double)
  • string(字符串)
  • boolean (布尔型)

  • integer (整型)

  • float (浮点型, 也称作
    double)

  • string (字符串)

PHP
在变量定义中不需求(或不协助)明确的类型定义;变量类型是根据使用该变量的前后文所决定的。也就是说,假设把一个
string 值赋给变量 $var,$var 就成了一个 string。若是又把一个integer 赋给
$var,那它就成了一个integer。

两种复合类型

  • array(数组)
  • object(对象)
  • callable(可调用)

两种复合类型

  • array(数组)
  • object(对象)
  • callable(可调用)

二种复合类型:

PHP
的自动类型转换的一个例证是加法运算符“+”。倘使其余一个操作数是float,则持有的操作数都被当成float,结果也是float。否则操作数会被解释为integer,结果也是integer。注意那并没有变动那一个操作数本身的种类;改变的仅是这一个操作数怎么着被求值以及表明式本身的品类。

三种极度序列

  • resource(资源)
  • NULL(无类型)

三种独特类型

  • resource(资源)
  • NULL(无类型)
  • array (数组)

  • object (对象)

PHP允许的威吓转换

(int), (integer) – 转换为整形 integer
(bool), (boolean) – 转换为布尔类型 boolean
(float), (double), (real) – 转换为浮点型 float
(string) – 转换为字符串 string
(array) – 转换为数组 array
(object) – 转换为对象 object
(unset) – 转换为 NULL (PHP 5)

伪类型

  • mixed(混合类型)
  • number(数字类型)
  • callback(回调类型,又称作 callable)
  • www.5929.com ,array|object(数组 | 对象类型)
  • void (无类型)

伪类型

  • mixed(混合类型)
  • number(数字类型)
  • callback(回调类型,又称作 callable)
  • array|object(数组 | 对象类型)
  • void (无类型)

末尾是两种相当类型:

字符串转为数值

如若该字符串没有包罗 ‘.’,’e’ 或 ‘E’ 并且其数字值在整型的限制以内(由
PHP_INT_MAX 所定义),该字符串将被当成 integer
来取值。其它具有意况下都被当作 float 来取值。

该字符串的发端部分决定了它的值。假使该字符串以法定的数值发轫,则选取该数值。否则其值为
0(零)。合法数值由可选的正负号,后边随着一个或多个数字(可能有小数点),再跟着可选的指数部分。指数部分由
‘e’ 或 ‘E’ 前面跟着一个或几个数字构成。

 1 <?php
 2 $sSeparate = "\t";
 3 echo '结果',$sSeparate,'类型',"\n";
 4 $mFoo = 1 + '10.5';
 5 echo $mFoo,$sSeparate,getType($mFoo),"\n";
 6 
 7 $mFoo = 1 + '10';
 8 echo $mFoo,$sSeparate,getType($mFoo),"\n";
 9 
10 $mFoo = 1 + '-1.3e3';
11 echo $mFoo,$sSeparate,getType($mFoo),"\n";
12 
13 $mFoo = 1 + 'hello';
14 echo $mFoo,$sSeparate,getType($mFoo),"\n";
15 
16 $mFoo = 1 + '99hello';
17 echo $mFoo,$sSeparate,getType($mFoo),"\n";
18 
19 $mFoo = 1 + '99.90hello';
20 echo $mFoo,$sSeparate,getType($mFoo),"\n";
21 ?>
22 结果    类型
23 11.5    double
24 11       integer
25 -1299  double
26 1         integer
27 100     integer
28 100.9  double

赢得变量的序列

gettype — 得到变量的品类

string gettype ( mixed $var )

取得变量的门类

gettype — 得到变量的项目

string gettype ( mixed $var )
  • resource (资源)

  • NULL (NULL) 

转为整型

要明显地将一个值转换为 integer,用 (int) 或 (integer)
强制转换。但是多数情景下都不必要强制转换,因为当运算符,函数或流程控制须求一个
integer 参数时,值会自动转换。还足以由此函数 intval()
来将一个值转换成整型。

从布尔值转换

FALSE 将发出出 0(零),TRUE 将生出出 1(壹)。

从浮点型转换

当从浮点数转换成整数时,将向下取整。

检测变量的系列

  • 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 — 判断是不是为官方数值

检测变量的连串

  • 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 — 判断是或不是为合法数值

二,PHP弱类型

转为字符串型

一个值可以因而在其前面加上 (string) 或用 strval()
函数来扭转成字符串。在一个内需字符串的表明式中,会自动转换为
string。比如在采用函数 echo 或 print 时,或在一个变量和一个 string
进行相比较时,就会暴发那种转移。类型和类型转换可以更好的分解上面的事务,也可参照函数
settype()。

一个布尔值 boolean 的 TRUE 被转换成 string 的 “1”。Boolean 的 FALSE
被转换成 “”(空字符串)。那种转移可以在 boolean 和 string 之间互相举行。

一个整数 integer 或浮点数 float 被更换为数字的字面样式的 string(包涵float 中的指数部分)。使用指数计数法的浮点数(4.1E+6)也可转移。

Note:
在剧本的区域(category LC_NUMERIC)中定义了十进制小数点字符。参见
setlocale()。
数组 array 总是转换成字符串 “Array”,因而,echo 和 print
无法体现出该数组的情节。要体现某个单元,可以用 echo $arr[‘foo’]
那种社团。要显得整个数组内容见下文。

在 PHP 4 中目的 object 总是被转换成字符串 “Object”。

资源 resource 总会被扭转成 “Resource id #1” 那种协会的字符串,其中的 1
是 PHP 在运作时分配给该 resource
的唯一值。不要借助此布局,可能会有改动。要得到一个 resource
的种类,可以用函数 get_resource_type()。

NULL 总是被转变成空字符串。

如上边所说的,间接把 array,object 或 resource 转换成 string
不会赢得除了其体系之外的任何有用音信。可以动用函数 print_r() 和
var_dump() 列出那一个品种的始末。

1 <?php
2 var_dump(strval(10));       #string(2) "10"
3 var_dump(strval(FALSE));    #string(0) ""
4 var_dump(strval(true));     #string(1) "1"
5 var_dump(strval(100.09));   #string(6) "100.09"
6 var_dump(strval(NULL));     #string(0) ""
7 ?>

变量类型转换

settype — 设置变量的项目

bool settype ( mixed &$var , string $type )
参数 解释
var 要转换的变量。
type 转换后的数据类型

变量类型转换

settype — 设置变量的档次

bool settype ( mixed &$var , string $type )
参数 解释
var 要转换的变量。
type 转换后的数据类型

我们通晓,PHP是一种弱类型的语言(初叶化一个变量的时候,并不须求指定它的门类),可是前边提供了PHP变量的8连串型,那上下两句话就如有点冲突,大家改怎么领悟PHP的品种呢

转为数组型

对于任意 integer,float,string,boolean 和 resource
类型,假若将一个值转换为数组,将获取一个仅有一个元素的数组,其下标为
0,该因素即为此标量的值。换句话说,(array)$scalarValue 与
array($scalarValue) 完全一样。

如果一个 object 类型转换为
array,则结果为一个数组,其单元为该对象的习性。键名将为成员变量名,可是有几点差距:整数属性不可访问;私有变量前会加上类名作前缀;敬爱变量前会添加一个
‘*’ 做前缀。这么些前缀的左右都各有一个 NULL 字符。

NULL为空数组

 1 <?php
 2 print_r((array)10);
 3 /*
 4 Array
 5 (
 6     [0] => 10
 7 )
 8 */
 9 print_r((array)100.09);
10 /*
11 Array
12 (
13     [0] => 100.09
14 )
15 */
16 
17 print_r((array)0);
18 /*
19 Array
20 (
21     [0] => 0
22 )
23 */
24 print_r((array)-10);
25 /*
26 Array
27 (
28     [0] => -10
29 )
30 */
31 print_r((array)'string');
32 /*
33 Array
34 (
35     [0] => string
36 )
37 */
38 print_r((array)'0');
39 /*
40 Array
41 (
42     [0] => 0
43 )
44 */
45 print_r((array)true);
46 /*
47 Array
48 (
49     [0] => 1
50 )
51 */
52 print_r((array)FALSE);
53 /*
54 Array
55 (
56     [0] => 
57 )
58 */
59 print_r((array)NULL);
60 /*
61 Array
62 (
63 )
64  */
65 
66 class A
67 {
68     private $_A = 'A';  #私有
69     protected $B;   #受保护的
70 }
71 
72 class B extends A
73 {
74     public $C;      #公有
75     public function __construct()
76     {
77         $this->B = 'B';
78         $this->C = 'C';
79     }
80 }
81 print_r((array) new B());
82 /*
83 Array
84 (
85     [C] => C
86     [A_A] => A,私有变量前面会加上类名作为前缀
87     [*B] => B,受保护变量回家上*作为前缀
88 )
89 */
90 ?>

 

type取值

  • “boolean” (或为“bool”,从 PHP 4.2.0 起)
  • “integer” (或为“int”,从 PHP 4.2.0 起)
  • 数据类型,php类型转换以及类型转换的辨识。“float” (只在 PHP 4.2.0
    之后方可接纳,对于旧版本中接纳的“double”现已停用)
  • “string”
  • “array”
  • “object”
  • “null” (从 PHP 4.2.0 起)

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 起)

率先,PHP的最底层是存在8个品种的。

转为布尔型

要旗帜显明地将一个值转换成 boolean,用 (bool) 或者 (boolean)
来强制转换。可是洋洋境况下不要求用强制转换,因为当运算符,函数或者流程控制结构须求一个
boolean 参数时,该值会被活动转换。

 1 <?php
 2 /**
 3  * 当转换为 boolean 时,以下值被认为是 FALSE:
 4  * 布尔值 FALSE 本身
 5  * 整型值 0(零)
 6  * 浮点型值 0.0(零)
 7  * 空字符串,以及字符串 "0"
 8  * 不包括任何元素的数组
 9  * 不包括任何成员变量的对象(仅 PHP 4.0 适用)
10  * 特殊类型 NULL(包括尚未赋值的变量)
11  * 从空标记生成的 SimpleXML 对象
12  **/
13 var_dump(FALSE);                        #bool(false)
14 var_dump((boolean)'');                  #bool(false)
15 var_dump((boolean)'string');            #bool(true)
16 var_dump((boolean)'0');                 #bool(false)
17 var_dump((boolean)1);                   #bool(true)
18 var_dump((boolean)1.0);                 #bool(true)
19 var_dump((boolean)-1);                  #bool(true)
20 var_dump((boolean)0);                   #bool(false)
21 var_dump((boolean)2.2e5);               #bool(true)
22 var_dump((boolean)array('one','two'));  #bool(true)
23 var_dump((boolean)array());             #bool(false)
24 $sTest = 'test';
25 unset($sTest);
26 var_dump((boolean)$sTest);              #bool(false)
27 var_dump((boolean)null);                #bool(false)
28 var_dump((boolean)$sNotDefined);        #bool(false)
29 ?>
使用 PHP 函数对变量 $x 进行比较
表达式 gettype() empty() is_null() isset() boolean : if($x)
$x = ""; string TRUE FALSE TRUE FALSE
$x = null; NULL TRUE TRUE FALSE FALSE
var $x; NULL TRUE TRUE FALSE FALSE
$x is undefined NULL TRUE TRUE FALSE FALSE
$x = array(); array TRUE FALSE TRUE FALSE
$x = false; boolean TRUE FALSE TRUE FALSE
$x = true; boolean FALSE FALSE TRUE TRUE
$x = 1; integer FALSE FALSE TRUE TRUE
$x = 42; integer FALSE FALSE TRUE TRUE
$x = 0; integer TRUE FALSE TRUE FALSE
$x = -1; integer FALSE FALSE TRUE TRUE
$x = "1"; string FALSE FALSE TRUE TRUE
$x = "0"; string TRUE FALSE TRUE FALSE
$x = "-1"; string FALSE FALSE TRUE TRUE
$x = "php"; string FALSE FALSE TRUE TRUE
$x = "true"; string FALSE FALSE TRUE TRUE
$x = "false"; string FALSE FALSE TRUE TRUE

 

 

花色强制转换

  • (int), (integer) – 转换为整形 integer
  • (bool), (boolean) – 转换为布尔类型 boolean
  • (float), (double), (real) – 转换为浮点型 float
  • (string) – 转换为字符串 string
  • (array) – 转换为数组 array
  • (object) – 转换为对象 object
  • (unset) – 转换为 NULL (PHP 5)

品类强制转换

  • (int), (integer) – 转换为整形 integer
  • (bool), (boolean) – 转换为布尔类型 boolean
  • (float), (double), (real) – 转换为浮点型 float
  • (string) – 转换为字符串 string
  • (array) – 转换为数组 array
  • (object) – 转换为目的 object
  • (unset) – 转换为 NULL (PHP 5)

附带,当你对一个变量先河化或赋值的时候,PHP的平底会自动识别即将赋予的值,然后设置该变量的体系。

对null的判断

 1 <?php
 2 $a;
 3 $b = null;
 4 $c = 'null';
 5 _is_null($a);
 6 _is_null($b);
 7 _is_null($c);
 8 function _is_null($var)
 9 {
10     echo '$var == null , ',var_dump($var == null).PHP_EOL;
11     echo '$var == \'null\' , ',var_dump($var == 'null').PHP_EOL;
12     echo 'is_null($var) , ',var_dump(is_null($var)).PHP_EOL;
13     echo '-------------------------------------'.PHP_EOL;       
14 }
15 ?>
16 $var == null , bool(true)
17 
18 $var == 'null' , bool(false)
19 
20 is_null($var) , bool(true)
21 
22 -------------------------------------
23 $var == null , bool(true)
24 
25 $var == 'null' , bool(false)
26 
27 is_null($var) , bool(true)
28 
29 -------------------------------------
30 $var == null , bool(false)
31 
32 $var == 'null' , bool(true)
33 
34 is_null($var) , bool(false)
35 
36 -------------------------------------

 

Boolean 布尔项目

那是最不难易行的门类。boolean 表明了真值,可以为 TRUE 或 FALSE。

Boolean 布尔品种

那是最简易的档次。boolean 表明了真值,可以为 TRUE 或 FALSE。

再也,当您对八个变量进行逻辑判断的时候,PHP的尾部会按照以下规则先进性类型转换再开展逻辑判断。

转移为布尔值

要明了地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。

唯独过多情景下不要求用强制转换,因为当运算符,函数或者流程控制结构须要一个
boolean 参数时,该值会被自动转换。

当转换为 boolean 时,以下值被认为是 FALSE:

  • 布尔值 FALSE 本身
  • 整型值 0(零)
  • 浮点型值 0.0(零)
  • 空字符串,以及字符串 “0”
  • 不包括其余因素的数组
  • 杰出体系 NULL(包罗没有赋值的变量)
  • 从空标记生成的 SimpleXML 对象

-1 和任何非零值(不论正负)一样,被认为是 TRUE!

改换为布尔值

要强烈地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。

只是过多境况下不需求用强制转换,因为当运算符,函数或者流程控制结构须求一个
boolean 参数时,该值会被电动转换。

当转换为 boolean 时,以下值被认为是 FALSE:

  • 布尔值 FALSE 本身
  • 整型值 0(零)
  • 浮点型值 0.0(零)
  • 空字符串,以及字符串 “0”
  • 不包罗别的因素的数组
  • 独特种类 NULL(包蕴没有赋值的变量)
  • 从空标记生成的 SimpleXML 对象

-1 和其它非零值(不论正负)一样,被认为是 TRUE!

1,逻辑判断是算术运算符,加减乘(+-*),如若其余一个操作数是浮点数,则有着的操作数都被当成浮点数,结果也是浮点数。否则操作数会被分解为整数,结果也是整数,

Integer 整型

整型值可以利用十进制,十六进制,八进制或二进制表示,前边可以拉长可选的符号(-
或者 +)。

<?php
$a = 1234; // 十进制数
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
$a = 0b11111111; // 二进制数字 (等于十进制 255)
?>

Integer 整型

整型值可以动用十进制,十六进制,八进制或二进制表示,前边可以加上可选的记号(-
或者 +)。

<?php
$a = 1234; // 十进制数
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
$a = 0b11111111; // 二进制数字 (等于十进制 255)
?>

2,逻辑判断是算术运算符,除(/),除法运算符总是回到浮点数。唯有在下列情形不一:五个操作数都是整数(或字符串转换成的整数)并且刚刚能整除,那时它回到一个平头。

平头溢出

假如给定的一个数超越了 integer 的范围,将会被解释为 float。

同样如若推行的演算结果出乎了 integer 范围,也会重返 float。

平头溢出

只要给定的一个数超越了 integer 的限量,将会被解说为 float。

无异于若是实施的运算结果出乎了 integer 范围,也会回来 float。

3,逻辑判断是算术运算符,取模(%),所有的操作位都被转换成整数,结果也是整数。

布尔值转换成整型

FALSE 将生出出 0(零),TRUE 将时有暴发出 1(壹)。

布尔值转换成整型

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

4,逻辑判断是算术运算符,取反(-),假如操作数是一个浮点数则结果也是浮点数,否则总是先把操作数转换成整数,结果也是整数。

浮点型转成整型

当从浮点数转换成整数时,将向下取整。

echo (int)3.12; # 输出3

浮点型转成整型

当从浮点数转换成整数时,将向下取整。

echo (int)3.12; # 输出3

5,逻辑判断是位运算符,所有的操作数都被转换成整数,结果也是整数。

字符串转成整型

<?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)     
?>

字符串转成整型

<?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)     
?>

6,逻辑判断是比较运算符,若是中间一个操作数是布尔值,则此外一个操作费会被撤换为布尔值,如若一个操作数是浮点型,则其它一个操作数也会被转移为浮点型,其他景况,四个操作数都会被转换成整数。无论操作数是怎么项目,相比较运算符的结果总是为布尔值。

Float 浮点型

浮点型(也叫浮点数 float,双精度数 double 或实数
real)可以用来下任一语法定义:

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

Float 浮点型

浮点型(也叫浮点数 float,双精度数 double 或实数
real)可以用来下任一语法定义:

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

 

浮点数的精度

之所以永远不要相信浮点数结果精确到了最终一位,也永远不要比较五个浮点数是还是不是等于。

倘诺确实须要更高的精度,应该运用任意精度数学函数或者 gmp 函数。

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

浮点数的精度

于是永远不要相信浮点数结果精确到了最后一位,也永远不要相比较五个浮点数是还是不是等于。

若是真的要求更高的精度,应该使用任意精度数学函数或者 gmp 函数。

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

String 字符串

一个字符串 string 就是由一星罗棋布的字符组成,其中每个字符等同于一个字节。

那意味着 PHP 只可以接济 256 的字符集,由此不援助 Unicode 。

string 最大可以达标 2GB。

String 字符串

一个字符串 string 就是由一密密麻麻的字符组成,其中每个字符等同于一个字节。

那代表 PHP 只可以支持 256 的字符集,因而不协理 Unicode 。

string 最大可以落成 2GB。

4种方法表明

  • 单引号
  • 双引号
  • heredoc 语法结构
  • nowdoc 语法结构(自 PHP 5.3.0 起)

4种方法表明

  • 单引号
  • 双引号
  • heredoc 语法结构
  • nowdoc 语法结构(自 PHP 5.3.0 起)

单引号

不像双引号和 heredoc
语法结构,在单引号字符串中的变量和特殊字符的转义种类将不会被调换。

单引号

不像双引号和 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} 符合该正则表达式序列的是一个以十六进制方式来表达的字符

双引号

用双引号定义的字符串最重点的性状是变量会被解析。

转义字符 含义
\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;

heredoc类似于双引号可以分析变量

```php
$name = 'Hello';
echo <<<EOD
里面的变量$name会解析。
EOD;

nowdoc类似于单引号不会分析变量

$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 总是被转变成空字符串。

转换成字符串

一个值能够经过在其前方加上 (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)     
?>

字符串转成数值

<?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数组

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。

概念数组 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>";
}

数组遍历

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

Object 对象

Object 对象

目的早先化

要创立一个新的目的 object,使用 new 语句实例化一个类:

<?php
class foo
{
    function do_foo()
    {
        echo "Doing foo."; 
    }
}

$bar = new foo;
$bar->do_foo();
?>

目的起头化

要创建一个新的靶子 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'
?>

转移为对象

若是将一个目的转换成对象,它将不会有其它变化。

假设别的任何项目标值被转换成对象,将会创制一个内置类 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 是一种奇特变量,保存了到表面资源的一个引用。

资源是通过专门的函数来树立和应用的。

Resource 资源类型

资源 resource 是一种特殊变量,保存了到表面资源的一个引用。

资源是因此专门的函数来建立和使用的。

更换为资源

由于资源类型变量保存有为开拓文件、数据库连接、图形画布区域等的特殊句柄,因而将其他品类的值转换为资源没有意思。

改换为资源

是因为资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特有句柄,因而将其余门类的值转换为资源没有意义。

放飞资源

PHP也有垃圾堆自动回收机制,可以自动检测到一个资源不再被引述了。

从始至终数据库连接相比较特殊,它们不会被垃圾回收系统销毁。

放飞资源

PHP也有垃圾堆自动回收机制,可以自动检测到一个资源不再被引述了。

从头到尾数据库连接比较出色,它们不会被垃圾回收系统销毁。

NULL

破例的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。

在下列情状下一个变量被认为是 NULL

  • 被赋值为 NULL。
  • 从没被赋值。
  • 被 unset()。

NULL

杰出的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。

在下列意况下一个变量被认为是 NULL

  • 被赋值为 NULL。
  • 尚无被赋值。
  • 被 unset()。

转换到 NULL

应用 (unset) $var 将一个变量转换为 null 将不会去除该变量或 unset
其值。仅是再次回到 NULL 值而已。

转换到 NULL

动用 (unset) $var 将一个变量转换为 null 将不会删除该变量或 unset
其值。仅是回来 NULL 值而已。

mixed

mixed 说诺优能(Nutrilon)(Nutrilon)个参数能够承受二种差其他(但不必然是富有的)类型。

譬如 gettype() 可以承受所有的 PHP 类型,str_replace()
可以承受字符串和数组。

mixed

mixed 说爱他美(Aptamil)(Aptamil)个参数可以接受各类差别的(但不必然是装有的)类型。

譬如说 gettype() 可以接受所有的 PHP 类型,str_replace()
可以接受字符串和数组。

number

number 说圣元(Aptamil)个参数可以是 integer 或者 float。

number

number 说美素佳儿(Friso)个参数能够是 integer 或者 float。

array|object

array|object 意思是参数既可以是 array 也得以是 object。

array|object

array|object 意思是参数既可以是 array 也可以是 object。

void

void 作为再次来到类型意味着函数的再次来到值是低效的。

void 作为参数列表意味着函数不收受其余参数。

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怎么着表明定义数组

  • 索引数组

默许下标或包蕴数字索引的数组

  • 关周到组

键名不为纯数字带有指定值如标识符的数组

  • 关于键值的认证

键(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_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怎么着对数组查、增、改、删

  • 查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怎么着举办数据类型转换

  • 类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怎样处理进制转换

  • 十进制转二进制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如何处理优先级的标题

运算符优先级指定了七个表明式绑定得有多”紧密”。可以选取括号来强制改变优先级。

要是运算符优先级相同,则运用从左到右的左联顺序。

www.5929.com 1

php如何处理优先级的难题

运算符优先级指定了两个表明式绑定得有多”紧密”。能够使用括号来强制改变优先级。

即便运算符优先级相同,则选择从左到右的左联顺序。

www.5929.com 2

自加、自减、三目运算符

#自加
$a=10;
echo $a++; //先用再加,最后结果为10
echo ++$a; //先加再用,最后结果为11
$a = 10;
$b = $a+ ++++$a;
echo $a; //结果为12
echo "
";
echo $b; //结果为22
#结合性导致的问题(++的优先级比+的高,且为右结合)

自加、自减、三目运算符

#自加
$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代码风格规范

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入门

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进阶

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开发笔记

case 实例

  1. php面试题笔记
  2. python图标提取
  3. 字幕乱码难题
  4. 支付宝接口调用
  5. laravel开发笔记

db 数据库

  1. elasticsearch入门
  2. 数据库操作
  3. 数据库设计
  4. redis入门

db 数据库

  1. elasticsearch入门
  2. 数据库操作
  3. 数据库设计
  4. redis入门

help

  • 援救文档
  • 流程图匡助文档

 

help

  • 扶助文档
  • 流程图扶助文档

 

Leave a Comment.