运算符优先级
<?php
$a = true ? 0 : true ? 1 : 2;
echo $a;
# (true ? 0 : true) ? 1 : 2 = 2
$a = 1;
$b = 2;
$a = $b += 3;
#求a,b
#a=b=5,相当于 a=b=b+3
$i = 1;
$array[$i] = $i++;
# 相当于:$array[1]=2;
#一下那些会报错
$m=2;
$n=3;
$s=$m++$m; #m+ ++m=2+ 3=5
+++$m; #报错
++$m;
$m**$n; //次方计算
?>
算数运算符
echo (5 % 3)."\n"; // prints 2
echo (5 % -3)."\n"; // prints 2
echo (-5 % 3)."\n"; // prints -2
echo (-5 % -3)."\n"; // prints -2
除法运算符总是返回浮点数。只有在下列情况例外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。
取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。
取模运算符 % 的结果和被除数的符号(正负号)相同。即 b 的结果和 $a 的符号相同。
引用赋值
$a = 3;
$b = &$a; // $b 是 $a 的引用
$b = 4; // 修改 $b
print "$a\n"; // 输出 4
print "$b\n"; // 也输出 4,因为 $b 是 $a 的引用,因此也被改变
以上代码中,修改a值,b值同样改变。因为引用赋值意味着两个变量指向了同一个数据,没有拷贝任何东西
所以改变任何一个都将影响另外一个。
自 PHP 5 起,new 运算符自动返回一个引用。
递增递减
例子 | 名称 | 效果 |
---|---|---|
++$a | 前加 | a。 |
$a++ | 后加 | 返回 a 的值加一。 |
--$a | 前减 | a。 |
$a-- | 后减 | 返回 a 的值减一。 |
<?php
$a=5;
echo $a++;
echo $a;
#56
$b=3;
echo ++$b;
echo $b;
#44
字符串运算符:
echo 1 . 2; //prints the string "12"
echo 1.2; //prints the number 1.2
echo 'qwe{$a}rty'; // 不解析,因为是单引号
字母运算符 递增/递减
字母运算符不能这样写 "a"++;
这样写会报错(递增或者递减只对变量生效,常量会报错 比如1++;会报错)。可以先将字母复制给一个变量,对变量进行递增或者递减。
注意:字母运算使用递减符号,保持原值不变!原文:注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。递增/递减其他字符变量则无效,原字符串没有变化。
echo 1++; #报错
$s="B";
echo $s++; #B
echo ++$s; #C
echo --$s; #B
逻辑运算符
逻辑异或:如果 b 任一为 TRUE,但不同时是,则返回true
被短路的情况下,即使后面的语法有错误也不会执行!
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
逻辑运算符优先级
php在线面试题集:http://cainiaophp.com/
php面试讨论群:536633782