什么是表达式
表达式是 PHP 最重要的基石,在 PHP 中,几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是“任何有值的东西”。
PHP运算符
按照功能划分
算数运算符
x + y 加
x - y 减
x * y 乘
x / y 除
x % y 模(除法的余数)
- x 取反,x 取反 -2
x . y 并置,连接两个字符串 "Hi" . "Ha"得到HiHa
实例
<?php
$a = 3;
$b = 5;
echo $a+$b; //8
echo $a-$b; //-2
echo $a*$b; //15
echo $a/$b; //0.6
echo $a%$b; //3
echo $a%-$b; //3
echo -$a%$b; //-3
echo -$a%-$b; //-3
递增递减运算符
++ x 预递增,x 加 1,然后返回 x
x ++ 后递增,返回 x,然后 x 加 1
-- x 预递减,x 减 1,然后返回 x
x -- 后递减,返回 x,然后 x 减 1
实例
<?php
$i = 1;
echo ++$i;//2
$i = 5;
echo $i++; //5
echo $i; //6
$j = 3;
echo $j--; //3
echo $j; //2
$j = 3;
echo --$j; //2
//浮点数支持递增递减运算符
$var = 1.2;
echo ++$var; //
echo "<br/>";
$var = 2.3;
echo --$var; //1.3
$var = 4.5;
echo $var++; //4.5
echo $var; //5.5
$var = 6.7;
echo $var--; //6.7
echo $var; //5.7
//布尔类型不支持递增递减运算符
$var = true;
echo ++$var; //1
$var = true;
echo --$var; //1
//null只支持递增运算符不支持递减运算符
$var = null;
echo ++$var; //1
$var = null;
echo --$var; //
//字符串只支持递增运算符不支持递减运算符
$str = "a";
echo ++$str; //b
$str = "m";
echo --$str; //m
$str = "z";
echo ++$str; //aa
$str = "a1";
echo ++$str; //a2
$str = "a9";
echo ++$str; //b0
字符连接符
英文的 . 和 , 来连接字符串
echo "a"."b"."c"; //abc
$str1 = "Hello";
$str2 = "World";
echo $str1," ",$str2; //Hello World
$newStr = $str1,$str2;
echo $newStr; //提示语法错误因为 “,” 是echo语句特有的
$newStr = $str1." ".$str2;
echo $newStr; //Hello World
赋值运算符
在 PHP 中,基本的赋值运算符是 “=”。它意味着左操作数被设置为右侧表达式的值。也就是说,”$x = 5” 的值是 5
x = y x = y 左操作数被设置为右侧表达式的值
x += y x = x + y 加
x -= y x = x - y 减
x *= y x = x * y 乘
x /= y x = x / y 除
x %= y x = x % y 模(除法的余数)
a .= b a = a . b 连接两个字符串
实例
<?php
$i = "3";
$i+=5;
echo $i; //8
$k = "5";
$k -= 7;
echo $k; //-2
$m = "9";
$m *= 2;
echo $m; //18
$q = "8";
$q /= 4;
echo $q; //2
$n = "6";
$n %= 2;
echo $n; //0
$str = "hello";
$str .= "world";
echo $str; //helloworld
比较运算符
x == y 等于 如果 x 等于 y,则返回true,5==8,返回false
x === y 绝对等于 如果 x 等于 y,且它们类型相同,则返回true,5==="5" 返回false
x != y 不等于 如果 x 不等于 y,则返回true,5!=8 返回true
x <> y 不等于 如果 x 不等于 y,则返回true,5<>8 返回true
x !== y 绝对不等于 如果 x 不等于 y,或它们类型不相同,则返回true,5!=="5" 返回true
x > y 大于 如果 x 大于 y,则返回,true,5>8 返回false
x < y 小于 如果 x 小于 y,则返回true,5<8 返回true
x >= y 大于等于 如果 x 大于或者等于 y,则返回true,5>=8 返回false
x <= y 小于等于 如果 x 小于或者等于 y,则返回true,5<=8 返回true
实例
<?php
var_dump(
3>1, //bool(true)
2<4, //bool(true)
3>=1, //bool(true)
2<=4 //bool(true)
);
//测试==和===的区别
var_dump(
1==true, //bool(true)
1=="1", //bool(true)
0==false, //bool(true)
0==null, //bool(true)
1!=="1", //bool(true)
1!==1, //bool(false)
1!="1", //bool(false)
1<>1 //bool(false)
);
var_dump(
1===true, //bool(false)
1==="1", //bool(false)
0===false, //bool(false)
0===null //bool(false)
);
逻辑运算符
x and y 与 如果 x 和 y 都为 true,则返回 true
x or y 或 如果 x 和 y 至少有一个为 true,则返回 true
x xor y 异或 如果 x 和 y 有且仅有一个为 true,则返回 true
x && y 与 如果 x 和 y 都为 true,则返回 true
x || y 或 如果 x 和 y 至少有一个为 true,则返回 true
! x 非 如果 x 不为 true,则返回 true
实例
<?php
//测试逻辑运算符
//逻辑与
var_dump(
true && true, //bool(true)
true && false, //bool(false)
false && true, //bool(false)
false && false //bool(false)
);
//逻辑或
var_dump(
true || true, //bool(true)
true || false, //bool(true)
false || true, //bool(true)
false || false //bool(false)
);
//逻辑非
var_dump(
!true, //bool(false)
!false //bool(true)
);
//逻辑异或
var_dump(
true xor true, //bool(false)
true xor false, //bool(true)
false xor true, //bool(true)
false xor false //bool(false)
);
//逻辑与短路
$i = 0;
$j = 1;
if ($i && $j) {//0>-false && 1>-true
echo "aa";
}else{
echo "bb";
}
//bb
$i = 0;
$j = 1;
if ($i && --$j){//0>-false && 0>-false
echo "aa";
}else{
echo "bb";
}
//bb
$i = 0;
$j = 0;
if (++$i && $j++){//1>-true && 0>-false
echo "aa";
}else{
echo "bb";
}
//bb
//逻辑或短路
$i = 0;
$j = 1;
if (++$i || --$j){
echo "aa";
}else{
echo "bb";
}
//aa
错误抑制符
抑制错误输出,同过@符号加到会产生错误的表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
<?php
$var = 123;
@settype($var,"xuxiaoke");
按照运算符数目
三元运算符
(expr1) ? (expr2) : (expr3)
如果exp1为真,执行?之后的exp2,否则执行:之后的exp3
实例
<?php
$int = 2;
$result = $int == 2 ? "我" : "你";
echo $result;
运算符优先级
// 优先级: && > = > and
// 优先级: || > = > or
发表评论