php类型转换以及类型转换的辨别

  • boolean (布尔型)

  • integer (整型)

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

  • string (字符串)

连带链接

字符串转成数值

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

三种奇特类型

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

先是,PHP的平底是存在8个档次的。

有些摘自PHP: 类型 –
Manual

自由资源

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

善始善终数据库连接相比越发,它们不会被垃圾回收系列销毁。

类型强制转换

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

最后是两种卓殊类型:

PHP允许的强制转换

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

平头溢出

如果给定的一个数当先了 integer 的限制,将会被诠释为 float。

相同即使执行的运算结果出乎了 integer 范围,也会回到 float。

NULL

极度的 NULL 值表示一个变量没有值。NULL 类型唯一或然的值就是 NULL。

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

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

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

字符串转为数值

一经该字符串没有包蕴 ‘.’,’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

Boolean 布尔类型

那是最简便易行的花色。boolean 表达了真值,可以为 TRUE 或 FALSE。

字符串转成整型

<?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,逻辑判断是比较运算符,要是中间一个操作数是布尔值,则此外一个操作费会被转移为布尔值,即使一个操作数是浮点型,则其它一个操作数也会被转换为浮点型,其余情形,七个操作数都会被转换成整数。无论操作数是怎么样类型,相比运算符的结果总是为布尔值。

转为布尔型

要肯定地将一个值转换成 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

 

 

Array数组

PHP 中的数组实际上是一个逐步映射。映射是一种把 values 关联到 keys
的档次。

转换到 NULL

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

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

对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 -------------------------------------

 

对象早先化

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

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

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

七种标题类型

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

两种复合类型:

转为整型

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

从布尔值转换

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

从浮点型转换

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

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)

array|object

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

  • array (数组)

  • object (对象)

PHP
在变量定义中不要求(或不援救)明确的类型定义;变量类型是依照使用该变量的内外文所决定的。也就是说,即使把一个
string 值赋给变量 $var,$var 就成了一个 string。倘若又把一个integer 赋给
$var,那它就成了一个integer。

php怎么着处理进制转换

  • 十进制转二进制decbin()

echo decbin(12); //输出 1100
  • 365bet体育在线网投,十进制转八进制 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

number

number 说圣元(Synutra)个参数可以是 integer 大概 float。

二,PHP弱类型

PHP
的电动类型转换的一个例证是加法运算符“+”。借使此外一个操作数是float,则有所的操作数都被当成float,结果也是float。否则操作数会被演讲为integer,结果也是integer。注意那并没有改观那一个操作数本人的花色;改变的仅是这一个操作数怎样被求值以及表明式自个儿的档次。

php怎样处理优先级的题材

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

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

365bet体育在线网投 1

衿华客

  • resource (资源)

  • NULL (NULL) 

转为数组型

对于任意 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 ?>

 

4种办法发挥

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

浮点数的精度

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

倘使实在需求更高的精度,应该利用任意精度数学函数大概 gmp 函数。

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

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

转为字符串型

一个值可以透过在其目前加上 (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 ?>

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

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

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代码风格规范

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

三种复合类型

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

mixed

mixed 说多美滋(Dumex)个参数可以承受多样不相同的(但不必然是颇具的)类型。

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

咱俩领悟,PHP是一种弱类型的语言(开始化一个变量的时候,并不须要指定它的档次),不过前面提供了PHP变量的8体系型,那上下两句话就好像有点争持,大家改怎么领悟PHP的品类呢

收获变量的项目

gettype — 得到变量的花色

string gettype ( mixed $var )

转换为资源

鉴于资源类型变量保存有为开辟文件、数据库连接、图形画布区域等的极度句柄,由此将其余品类的值转换为资源没有意义。

 

二种越发类型

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

数组遍历

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

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

变量类型转换

settype — 设置变量的类型

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

help

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

 

发表评论

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