言语参考,php类型转换以及类型转换的辨别

by admin on 2019年1月31日

一,PHP变量的8个类型

有些摘自PHP: 类型 –
Manual

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

转为整型

言语参考,php类型转换以及类型转换的辨别。要显明地将一个值转换为 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_言语参考,php类型转换以及类型转换的辨别。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 起)
  • “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 说明一个参数可以承受各样差其余(但不自然是具有的)类型。

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

mixed

mixed 说多美滋(Dumex)个参数可以承受多样差其他(但不肯定是有着的)类型。

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

number

number 说喜宝(Hipp)(Karicare)个参数可以是 integer 或者 float。

number

number 说雅培(Abbott)(Karicare)个参数可以是 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怎么样表明定义数组

  • 索引数组

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

  • 论及数组

bf88必发唯一官网,键名不为纯数字带有指定值如标识符的数组

  • 关于键值的印证

键(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如何处理优先级的标题

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

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

bf88必发唯一官网 1

php怎么样处理优先级的标题

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

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

bf88必发唯一官网 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

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

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图