凡是运算PHP运算符,必有返回值即运算结果
算术运算符
算术运算符:用于执行两个变量或值的算术运算。
运算符描述
+
加
-
减
*
乘
/
除
%
获取余数(取余、取模)
-
取反
取模运算符的用法
$arr = array(1,2,3,4,5,6);
for ($i=0;$i<count($arr);$i++){
echo $arr[$i];
if (($i+1) % 2 == 0){
echo ' ';
}
}
字符串使用算术运算符
$a = "12.3hello99";
$a = $a + 3;
var_dump($a);
自增/自减运算符
注意++a与a++的区别
$a = 1;
echo ++$a;
$b = 10;
echo $b++;
$b = 5;
$a = $b++;
var_dump($a,$b);
$b = 5;
$a = ++$b;
var_dump($a,$b);
字符串的++运算 (了解)
$i = 'a' ;
echo ++ $i;
$i = 'abc';
echo ++ $i;
布尔型的++运算
$n = false;
$n++;
var_dump($n);
赋值运算符
可以将符号右侧的值赋值给符号左侧的变量
$a = 2;
$b = 5;
$b += $a;
$b /= $a;
$b %= $a;
注意:区分传值赋值和引用赋值
比较运算符
比较运算符的返回值结果为布尔型值
$a == $b等于TRUE ,如果类型转换后 $a 等于 $b
$a === $b
全等
TRUE ,如果 $a 等于 $b ,并且它们的类型也相同
$a != $b
不等
TRUE ,如果类型转换后 $a 不等于 $b
$a !== $b
不全等
TRUE ,如果 $a 不等于 $b ,或者它们的类型不同
$a < $b
小于
TRUE ,如果 $a 严格小于 $b
$a > $b
大于
TRUE ,如果 $a 严格大于 $b
$a = $b
大于等于
TRUE ,如果 $a 大于或者等于 $b
float 运算后再比较会出现浮点数不精确的问题
var_dump((0.3-0.2) == 0.1);
var_dump((0.8-0.3) == 0.5);
== 和 === 的说明
$a = 1;
$b = '1xxx';
var_dump($a == $b);
var_dump($a === $b);
$a = 0;
$b = 'xxx';
var_dump($a == $b);
var_dump($a === $b);
逻辑运算符
逻辑运算符的结果为布尔型值,原值类型不变
逻辑运算符有四个:
a和b不仅可以是变量,也可以是表达式
$a = true;
$b = 'xxx';
function test(){
return true;
}
var_dump(0+0 and $b);
var_dump(!0.0);
var_dump(0+1 xor 1-1);
var_dump(!$a);
var_dump(!2);
var_dump(!test());
逻辑运算的短路特性
$a = 0;
$b = 1;
if ($a and ($b=10) ){
}else {
echo $b, " ";
}
$a = 1;
$b = 0;
if ($a or ($b=10) ) {
echo $b, " ";
}
逻辑运算短路测试
$a = 1; $b = 10;
if ($a++>1 and $b++>10){
echo 'ok';
}
echo 'a='.$a.'b='.$b;
逻辑运算的优先级问题
$a = false || true;
$b = false or true;
var_dump($a,$b);
$c = true && false;
$d = true and false;
var_dump($c,$d);
利用短路写的优秀代码
if (!defined("PI")){
define("PI", 3.14);
}
defined("PI") || define("PI",3.14);
echo PI;
$a = -10;
$a < 5 && $a=5;
echo $a;
三元运算符
语法:
条件表达式 ? 语句1 : 语句2;
执行的流程:
条件运算符在执行时,首先对条件表达式进行求值:
代码示例:
a b不仅可以是变量,也可以是表达式,函数的调用
$a = 1;
$b = 2;
$c = 3;
function test($n,$m){
return $n + $m;
}
$res = $a>$b? $a:$b;
$res = ($a>$b? $a:$b)>$c? ($a>$b? $a:$b):$c;
三元运算符的经典使用,判断获取的表单数据是否满足条件
$action = (empty( $_POST [ 'action' ])) ? 'default' : $_POST [ 'action' ];
if (empty( $_POST [ 'action' ])) {
$action = 'default' ;
} else {
$action = $_POST [ 'action' ];
}
复杂的三元运算符就加括号
echo ( true ? 'true' : false ? 't' : 'f' );
echo (( true ? 'true' : 'false' ) ? 't' : 'f' );
字符串运算符
使用 . 拼接字符串
$a = "Hello " ;
$b = $a . "World!" ;
$a = "Hello " ;
$a .= "World!" ;
数字到字符串的自动转换
$a = 123;
$a = $a."hello";
var_dump($a);
数组运算符
数组运算符的结果为布尔型值
$a + $b联合$a 和 $b 的联合
$a == $b
相等
如果 $a 和 $b 具有相同的键/值对则为 TRUE
$a === $b
全等
如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE
$a != $b
不等
如果 $a 不等于 $b 则为 TRUE
$a !== $b
不全等
如果 $a 不全等于 $b 则为 TRUE
细节讨论
$arr1 = array(1, 2, 'age'=>'18');
$arr2 = array(3, 4, 'age'=>'88');
$arr3 = $arr1 + $arr2;
var_dump($arr3);
print_r($arr3);
$arr1 = array(1, 2, 3);
$arr2 = array(true, '2', 3);
var_dump($arr1 == $arr2);
var_dump($arr1 === $arr2);
类型运算符
instanceof 用于判断一个对象是否属于某个类的实例
class A{}
$a = new A();
var_dump($a instanceof A);
instanceof 也可用来判断一个对象是不是继承自某个父类的子类的实例
class A{}
class B extends A{}
$b = new B();
var_dump($b instanceof A);
var_dump($b instanceof B);
instanceof也可用于确定一个变量是不是实现了某个接口的对象的实例
interface A{}
interface B{}
class Dog implements A,B{}
$d = new Dog();
var_dump($d instanceof A);
var_dump($d instanceof B);
var_dump($d instanceof Dog);
执行运算符
将cmd控制台的查询出的数据输出到浏览器页面
header('Content-type: text/html;charset=gbk');
echo '' ;
echo `netstat -anb`;
echo `ipconfig`;
错误控制运算符
$con = @mysql_connect('localhost','root','') or die(mysql_error());
if ($con){
echo 'ok';
}else{
echo 'error';
}
位运算
10进制 2进制
5 0000 0101
12 0000 1100
echo 5 & 12;
echo 5 | 12;
echo 5 ^ 12;
echo ~5;
(编辑:威海站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|