菜单

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

2019年2月2日 - 金沙编程资讯

两种标量类型:

转为数组型

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

 

frame 框架

  1. laravel入门
  2. dingo入门
  3. JWT入门
  4. Laravel框架关键技术解析
  5. laravel则修笔记
  6. rpc入门
  7. rabbitmq入门
  8. opencc多国语言
  9. laravel兄弟连笔记
  10. laravel进阶

server 环境

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

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

相关链接

array|object

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

花色强制转换

一,PHP变量的8个类型

转为字符串型

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

数组类型

目的发轫化

要创设一个新的靶子 object,使用 new 语句实例化一个类:

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

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

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

转为整型

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

从布尔值转换

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

从浮点型转换

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

php怎么着对数组查、增、改、删

#返回查找到的元素下标
$myarr = array("A","B","C");
echo array_search("B",$myarr);

#返回增加后数组的大小
$myarr = array("A","B","C");
echo array_push($myarr,"D");
print_r($myarr);

$myarr = array("A","B","C");
$myarr = array_chunk($myarr,2,true);
print_r($myarr);

#返回删除重复元素后的数组
$myarr = array("A","B","C","B");
print_r(array_unique($myarr));
#unset无返回值
$myarr = array("A","B","C");
unset($myarr[2]);

$myarr1 = array("one","two");
$myarr2 = array("three","four");
$myarr3 = array_merge($myarr1, $myarr2);
print_r($myarr3);  

变量类型转换

settype — 设置变量的项目

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

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

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

 

二种奇特体系

php怎么着表明定义数组

默许下标或含有数字索引的数组

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

键(key)可以是一个平头integer或字符串string

值(value)可以是随便档次的值

$myarr['Q'] = "Q";
$myarr[] = "A";
$myarr[] = "B";
$myarr[2] = "B";
print_r($myarr);
#在php中数据可以动态改变长度。并且会默认按下标进行赋值。

#一维数组
$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)."维数组";

转为布尔型

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

 

 

case 实例

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

Array数组

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

终极是两种更加类型:

PHP
在变量定义中不需求(或不匡助)明确的类型定义;变量类型是根据使用该变量的左右文所决定的。也就是说,如若把一个
string 值赋给变量 $var,$var 就成了一个 string。即便又把一个integer 赋给
$var,这它就成了一个integer。

php怎样注脚定义数组

默认下标或包涵数字索引的数组

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

键(key)可以是一个整数integer或字符串string

值(value)可以是随便档次的值

$myarr['Q'] = "Q";
$myarr[] = "A";
$myarr[] = "B";
$myarr[2] = "B";
print_r($myarr);
#在php中数据可以动态改变长度。并且会默认按下标进行赋值。

#一维数组
$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)."维数组";

得到变量的档次

gettype — 获得变量的连串

string gettype ( mixed $var )

PHP
的电动类型转换的一个例证是加法运算符“+”。若是其余一个操作数是float,则有所的操作数都被当成float,结果也是float。否则操作数会被分解为integer,结果也是integer。注意那并不曾改变那些操作数本身的品类;改变的仅是这个操作数怎么样被求值以及表明式本身的类型。

布尔值转换成整型

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

自加、自减、三目运算符

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

说不上,当您对一个变量初叶化或赋值的时候,PHP的底层会自动识别即将赋予的值,然后设置该变量的花色。

PHP允许的威胁转换

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

php怎么样处理进制转换

echo decbin(12); //输出 1100

echo decoct(15); //输出 17

echo dechex(10); //输出 a

$binary = "11111001";
$hex = dechex(bindec($binary));
echo $hex;//输出f9

echo bindec('110011'); //输出 51

echo octdec('77'); //输出 63

echo hexdec("F"); //输出 15

$hexadecimal = 'A37334';
echo base_convert($hexadecimal, 16, 2);//输出 101000110111001100110100

平头溢出

假诺给定的一个数领先了 integer 的限定,将会被解释为 float。

同等如若推行的演算结果大于了 integer 范围,也会重临 float。

再一次,当您对七个变量举办逻辑判断的时候,PHP的底层会依照以下规则先进性类型转换再展开逻辑判断。

有的摘自PHP: 类型 –
Manual

Array数组

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

String 字符串

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

那象征 PHP 只能够帮衬 256 的字符集,由此不帮助 Unicode 。

string 最大可以达到 2GB。

二,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

String 字符串

一个字符串 string 就是由一文山会海的字符组成,其中每个字符等同于一个字节。

那象征 PHP 只好援救 256 的字符集,由此不接济 Unicode 。

string 最大可以完成 2GB。

PHP 数据类型


大家领略,PHP是一种弱类型的言语(先导化一个变量的时候,并不必要指定它的花色),然则前面提供了PHP变量的8种档次,那上下两句话就像有点龃龉,大家改怎么理解PHP的系列呢

转移为目的

只要将一个对象转换成对象,它将不会有别的变化。

设若其余任何项目标值被转换成对象,将会创制一个内置类 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'
?>

help

 

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

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

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

伪类型

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

mixed

mixed 表明一(Wissu)(Aptamil)个参数可以接受各种分裂的(但不肯定是兼备的)类型。

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

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

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

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

图片 1

检测变量的系列

概念数组 array()

可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的
键(key) => 值(value)对。

<?php
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

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

key 会有如下的强制转换

相关文章

发表评论

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

网站地图xml地图