1.单双引号对比
转义
单引号只转义 ’ 和 \ ,其他的不转义
变量解析
双引号里面变量是可以解析的
速度
单引号不需要解析串内有没有变量,需要转义的内容也少,速度快点
heredoc(类似双引号)和newdoc(类似单引号)的区别类似
2.数组注意点
如果不声明键,会从0,1,2,...递增来生成键
array(‘a’,‘b’,‘c’);
如果已存在某一个或者几个数字键,则从最大的数字键开始递增
,从左往右开始遇到最大的就重新以最新的max开始
array(3=>‘a’,‘b’,‘c’);
$a = array(2=>‘a’,‘b’,5=>‘c’,‘d’);
$a = array(‘a’,‘b’,3=>‘d’,5=>‘c’,‘e’);
如果键声明重复,后面的值会覆盖前面的值
$a = array(5=>‘a’,‘b’,3=>‘d’,5=>‘c’,‘e’);
键可以是整数,可以是字符串
$a = array(2=>‘a’,2.5=>‘b’); //浮点数会变成整数
$a = array(2=>‘a’, ‘2’=>‘b’); //字符串的内容是整数,会变成整数
$a = array(2=>‘a’,2.5=>‘b’,‘2.5’=>‘c’,‘2’=>‘d’,‘2x’=>‘e’,‘f’);
3.类型的转换
常见的是字符串和数字的转换,
或者 字符串/数字 --> 布尔型的转换
分隐式和强制(显式)转换
字符串-->数字
$a = '12'
$a = $a + 3;
var_dump($a); //15
$a = '12hello'
$a = $a + 3;
var_dump($a); //15
$a = 'hello12hello'
$a = $a + 3;
var_dump($a); //3
$a = '12hello99'
$a = $a + 3;
var_dump($a); //15
规律:从左到右截取,直到碰到不合法的数字,截取出来的部分装换成数字
数字-->字符串
$a = 123;
$a = $a.'hello';
var_dump($a); //123hello
转换成布尔值:
以下值都被当作布尔的假,其他值,都被当作布尔的真
'','0',0,0.0,false,null,array();
整型-->浮点数;
$a = 3200000000; //int
$b = 3200000000; //int
var_dump($a+$b) //float(6400000000)
4.%运算符
$a = 10;
$b = 3;
echo $a % $b; //1
$a = -10;
$b = 3;
echo $a % $b; //-1
$a = -10;
$b = -3;
echo $a % $b; //-1
规则:取模算法的时候,结果的正负仅仅取决于被除数.
5.echo问题
下面那个运行速度更快?
$a = 'hello';
$b = 'world';
echo $a.$b; //helloworld
.是一个拼接的运算
echo $a,$b; //helloworld
这个运行更快