php 运算符

总结了一部分面试题,比较容易混的资料 ,今天整理了下

foo()和@foo()的区别是什么

错误控制符@

当放到php表达式之前,该表达式可能产生的任何错误信息都被忽略掉

php所有的运算符考点

运算符的优先级

递增/递减 > ! > 算数运算符  > 大小比较运算符 > (不)相等比较 > 引用 > 位运算符(^)> 位运算符(|)> 逻辑与 > 逻辑或 > 三目 赋值 > and > xor > or 


注意:true  null  0

递增/递减 运算符不影响布尔值

false--    false    

false++  false


递减NULL值没有效果  

递增NULL值为1 

NULL--    NULL

NULL++   1


TRUE++  还是1

0++ 是1


1 递增/递减运算符

<?php
$x=10; 
echo ++$x; // 输出 11

$y=10; 
echo $y++; // 输出 10

$z=5;
echo --$z; // 输出 4

$i=5;
echo $i--; // 输出 5
?>

2 算数运算符

$x=10; 
$y=6;
echo ($x + $y); // 输出 16
echo ($x - $y); // 输出 4
echo ($x * $y); // 输出 60
echo ($x / $y); // 输出 1.6666666666667
echo ($x % $y); // 输出 4

比较运算符

$x=100; 
$y="100";

var_dump($x == $y);
echo "<br>";
var_dump($x === $y);
echo "<br>";
var_dump($x != $y);
echo "<br>";
var_dump($x !== $y);
echo "<br>";

$a=50;
$b=90;

var_dump($a > $b);
echo "<br>";
var_dump($a < $b);

4 逻辑与

$a && $b


5 逻辑或

$a  ||  $b


6 赋值运算符

$x=10; 
echo $x; // 输出 10

$y=20; 
$y += 100;
echo $y; // 输出 120

$z=50;
$z -= 25;
echo $z; // 输出 25

$i=5;
$i *= 6;
echo $i; // 输出 30

$j=10;
$j /= 5;
echo $j; // 输出 2

$k=15;
$k %= 4;
echo $k; // 输出 3

括号的使用,可以增加代码的可读性


递增和递减在前就先运算后返回,反之就先返回,后运算


逻辑运算符

短路作用 

$a = true || $b == 3     ------ 逻辑或有一个为true就短路,后面不执行,$b就没有赋值
|| 和 && 与 or 和 and的 优先级 不同

$a = false || true   ------ $a = true  逻辑或优先级大于赋值预算符,先执行 false || true 
$b = false or true   ------ 赋值运算符优先级高于or,先执行$b = false,则$b的值为false,整体为true

1 真题

$a = 0;
$b = 0;
if($a = 3 > 0 || $b = 3 > 0){
   $a ++;
   $b ++;
   echo $a;
   echo $b;
}

分析

大小比较运算符>逻辑或>赋值预算符
3>0是true,逻辑或有一个为true,结束,后面不执行,$b还是0,整体为true,
$a = true, true++ 还是true,最后$a++ = 1,$b++ = 1


$a = 0;
$b = 0;
if($a = 3 && $b = 3 ){
   $a++;
   $b++;
}
echo $a; //1
echo $b; //4 
逻辑与优先级大于赋值运算符,$a =  3 && $b = 3 都为真,$b为3,但是整体为true,$a = true,true++为1,$b为4

$a = 0;
$b = 0;
if($a = 3 || $b = 3 ){
   $a++;
   $b++;
}
echo $a; //1
echo $b; //1

逻辑或优先级大于赋值运算符,$a = 3 || $b = 3逻辑或有一个为真,就会短路,后面不执行,$b还是0,0++为1,而

3 || $b = 3)为true,$a为true,true++为1

$a = 10;
echo $a++;  //10  只是返回,没有加一的变量

$a = 10;
$a++;
echo $a;  //11  返回之后去加一








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值