下面是从API上截图的一张PHP运算符优先级表格,从上到下,优先级从高到低
算术运算符
a、取反运算符:-,对单个变量进行取反运算
b、加法运算符:+,无左右之分
c、加法运算符:-,有减数和被减数区别
d、乘法运算符:*,无左右之分
e、除法运算符:/,有除数和被除数之分,除被除数和除数都是整数并且整除返回整数情况之外,其他返回的都是浮点数
f、取模运算符:%,除后取余
位运算符
位运算符包含
a、按位与:&,除了1&1=1之外,其他都是0
b、按位或:|,除0|0=0之外,其他都是1
d、按位非:~,0设置为1,1设置为0
e、左移:<<,每一次移动都表示“乘以 2” f、 右移:>>,每一次移动都表示“除以 2”
比较运算符
比较运算符包含
a、等于:==
b、全等:===,两个变量相等并且它们的类型也相同
c、不等:!=、<>
d、非全等:!==
e、小于:<
f、 大于:>
g、小等于:<=
h、大等于:>=
逻辑运算符
逻辑运算符
a、逻辑与:&&、and。除了两个变量都为true时结果为true,其他都为false
b、逻辑或:||、or。除了两个变量都为false时结果为false,其他都为true
c、逻辑异或:xor。两个变量同时为true或者同时为false时结果为false,一真一假时结果为true
d、逻辑非:!。对单个变量起作用,真时为假,假时为真
数组运算符
a、联合运算符:+,运算符把右边的数组元素(除去键值与左边的数组元素相同的那些元素)附加到左边的数组后面,但是重复的键值不会被覆盖
b、等于:==,具有相同的键值对
c、全等:===,具有相同的键值对,并且顺序和类型都相同
d、不等:<>、!=
e、不全等:!==
其他运算符
a、赋值运算符:=
b、错误控制运算符:@,放在表达式的前面,忽略该表达式可能产生的任何错误信息
c、递增/递减运算符:++、–,两个运算符都分别分为前置和后置,和其他语言的作用是一样的
d、字符串运算符:.,连接两个字符串
<?php
$num=4;
var_dump($num); //int 4
/**************算术运算符*********************/
$num2=-$num;
var_dump($num2); //int -4
var_dump($num+$num2); //int 0
var_dump($num-$num2); //int 8
var_dump($num*$num2); //int -16
var_dump($num/$num2); //int -1
var_dump(7%6); //int 1
/**************位运算符*********************/
var_dump(7&1); //int 1
var_dump(7|0); //int 7
var_dump(7^7); //int 0
var_dump(7^0); //int 7
var_dump(~ $num); //int -5
var_dump($num<<2); //int 16
var_dump($num>>1); //int 2
var_dump($num>>3); //int 0
/**************比较运算符*********************/
$val1=1;
$val2=1.0;
if($val1==$val2){
echo "equal<br />"; //正常输出
}
if($val1===$val2){
echo "see?<br />"; //没有输出
}
/**************逻辑运算符*********************/
function func1(){
echo "func1 executed<br />";
return true;
}
function func2(){
echo "func2 executed<br />";
return false;
}
//func2被短路了,并没有执行
if(func1()||func2()){
echo "come in 1<br />"; //输出了
}
//func1被短路了,并没有执行
if(func2()&&func1()){
echo "come in 2<br />"; //没有进来
}
/**************数组运算符*********************/
$arr1=array(1,2,3);
/*
array (size=3)
0 => int 1
1 => int 2
2 => int 3
*/
var_dump($arr1);
$arr2=array(3,4,5,6,7);
/*
array (size=5)
0 => int 3
1 => int 4
2 => int 5
3 => int 6
4 => int 7
*/
var_dump($arr2);
$temp=$arr1+$arr2;
/*
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 6
4 => int 7
*/
var_dump($temp);
$arr3=array(
1=>1,
2=>2,
3=>3,
4=>4);
$arr4=array(
2=>2,
1=>1,
4=>4,
3=>3
);
if($arr3==$arr4){
echo "tow arrays are equal<br />"; //相等,正常输出
}
if($arr3===$arr4){
echo "tow arrays are all equal"; //不全等,不输出
}
/**************其他运算符*********************/
echo "hello "."world<br />"; //字符串连接符,输出hello world
class Test{}
$test=new Test;
if($test instanceof Test){
echo '$test is the instance of Test'; //$test是Test类的实例,正常输出
}
?>