0
点赞
收藏
分享

微信扫一扫

PHP学习 Day_04

纽二 2022-04-06 阅读 89



文章目录

  • 运算符
  • 算数运算符
  • 字符串运算符
  • 赋值运算符
  • 位运算符
  • 递增递减运算符
  • 逻辑运算符
  • 比较运算符
  • 短路运算
  • 三元运算符
  • 运算符优先级
  • 小结

运算符

算数运算符

  • 用来处理算数运算。如加、减、乘、除和求余(取模)
<?php

$a=4;
$b=5;
$c=$a+$b;
$d=$a-$b;
$e=$a*$b;
$f=$a/$b; //实型结果

echo "$c <br/>";
echo "$d <br/>";
echo "$e <br/>";
echo "$f <br/>";

?>

运算结果:

9 
-1
20
0.8
  • 求余数的正负结果与被除数相同,如果运算中含有小数,去尾后再运算
<?php

$a=4;
$b=5;

$c=$a%$b; //商为0,余数为4
$d=$b%$a; //商为1,余数为1

$e=(-8)*3; //商为-2,余数为-2
$f=(-8)/(-3); //商为2,余数为-2
$g=12.5%(-5.5); //去尾,即12%(-5)。商为-2,余数为2

echo "$c <br/>";
echo "$d <br/>";
echo "$e <br/>";
echo "$f <br/>";
echo "$g <br/>";
?>

运算结果:

4 
1
-2
-2
2


  • 取模时,运算结果一定比第二个变量小。
  • 含有一个负数时,运算结果与第一个变量的符号保持一致
  • 当有小数时,去掉小数部分,再进行取模


字符串运算符

  • 字符运算符只有一个,即连接两个字符串的​​.​
<?php

$a="Hello";
$b="Bad";
$c=$a.$b;

echo $c;

?>

运算结果:

HelloBad

赋值运算符

  • 将赋值号右边的表达式的值赋给左边的变量

操作

符号

展开式

含义

赋值

=

$a=exp

$a=exp

将右边的值赋给左边

+=

$a+=exp

$a=$a+exp

先计算出exp,然后加$a,再将值赋给左边

-=

$a-=exp

$a=$a-exp

先计算出exp,然后减$a,再将值赋给左边

*=

$a*=exp

$a=$a*exp

先计算出exp,然后$a乘以exp,再将值赋给左边

/=

$a/=exp

$a=$a/exp

先计算出exp,然后$a除以exp,再将值赋给左边

连接

.=

$a.=exp

$a=$a.exp

先计算出exp,然后将$a与exp连接,再将值赋给左边

取模

%=

$a%=exp

$a=$a%exp

先计算出exp,然后计算$a%exp的模,再将值赋给左边

<?php
//使用utf-8编码,不然可能会出现乱码
header("Content-Type:text/html;charset=utf-8");

$a=2+3*5; //值为17
echo '$a的值为:'.$a."<br/>";
$a+=3+4; //$a=17+(3+4),值为24
echo '$a+=的值为:'.$a."<br/>";

$b=2;
$b-=3+4; //$b=2-(3+4),值为-5
echo '$b-=的值为:'.$b."<br/>";
$b*=2+3; //$b*(2+3),值为-25
echo '$b*=的值为:'.$b."<br/>";

$c=5;
$c/=5-4; //$c=5/(5-4),值为5
echo '$c/=的值为:'.$c."<br/>";
$c.=2+3; //$c=$c."2+3",值为55
echo '$c.=的值为:'.$c."<br/>";
var_dump($c); //查看$c的数据类型
echo "<br/>";

$d=14;
$d%=2+3; //$d=14%(2+3),值为4
echo '$d%=的值为:'.$d."<br/>";
$e=$f=5; //先将5赋值给$f,再将$f赋值给$e,值为5
echo '$e的值为:'.$e."<br/>";
echo '$f的值为:'.$f."<br/>";

?>

运算结果:

$a的值为:17
$a+=的值为:24
$b-=的值为:-5
$b*=的值为:-25
$c/=的值为:5
$c.=的值为:55
string(2) "55"
$d%=的值为:4
$e的值为:5
$f的值为:5


  • 因为用了字符串连接符,所以​​$c​​的数据类型就会转换为字符串类型
  • 这里因为用了中文,所以一定要注意编码!


位运算符

  • 对二进制数从高位到低位对气后进行运算

符号

作用

说明

&

按位与

$a&$b

只有两个都为1的时候,结果才为1。其余都为0

|

按位或

$a|$b

只有两个都为0的时候,结果才为0。其余都为1

^

按位异或

$a^$b

$a!=$b,两个不相同时,结果才为1。其余都为0

~

按位取反

~$a

十进制数先+1,再取相反值

<<

向左移位

$a<<2

先将$a换成二进制数,再向左移两位,十进制数相当于乘以4

>>

向右移位

$a>>3

先将$a换成二进制数,再向右移三位,十进制数相当于除以8


注意!移位时空出的位补0


<?php
//使用utf-8编码,不然可能会出现乱码
header("Content-Type:text/html;charset=utf-8");

$a=6&5; //0110&0101,值为0100,即为十进制数4
echo '$a=6&5的值为:'.$a."<br/>";

$b=7|5; //0111|0101,值为0111,即十进制数7
echo '$b=7|5的值为:'.$b."<br/>";

$c=8^4; //1000^0100,值为1100,即十进制数12
echo '$c=8^4的值为:'.$c."<br/>";

$d=~7; //0111,去反为1000,最高位1表示负数,即十进制数-8
echo '$d=~7的值为:'.$d."<br/>";

$e=6<<2; //00000110,左移两位,即00011000,即十进制数24
echo '$e=6<<2的值为:'.$e."<br/>";

$f=8>>3; //1000,右移三位,即0001,即十进制数1
echo '$f=8>>3的值为:'.$f."<br/>";
?>

运算结果:

$a=6&5的值为:4
$b=7|5的值为:7
$c=8^4的值为:12
$d=~7的值为:-8
$e=6<<2的值为:24
$f=8>>3的值为:1


  • 在与、或、异或运算时,要换算成二进制数计算得出结果
  • 在取反、移位运算时,可以换算成二进制数计算,也可以用算数运算得出结果


递增递减运算符

  • 用于​单个变量​自增1或自减1
  • ​++​​ 递增运算符
  • ​--​​ 递减运算符
<?php
//使用utf-8编码,不然可能会出现乱码
header("Content-Type:text/html;charset=utf-8");

$a=5;
echo '$a++的值为:'.$a++."<br/>"; //先输出5,$a在+1
# 因为上面的计算,$a=6,下面的计算$a值为6
echo '++$a的值为:'.++$a."<br/>"; //$a先+1,在输出7

$b=5;
$c=--$b- --$b; //先计算--$b的值为4,再自减1为3,即$c=4-3,输出值为1
echo '--$b- --$b的值为:'.$c."<br/>";

?>

运算结果:

$a++的值为:5
++$a的值为:7
--$b- --$b的值为:1


  • 在使用连续的–运算符时(如上的$c),中间要用空格空隔开,或者用括号包含变量
  • 递增递减运算符​只能用于单个变量​,​不能​用于多个变量,如​​$a=++($b+$c)​


逻辑运算符

  • 用于处理逻辑运算

运算符

说明

&&或and(逻辑与)

$a&&$b

a 和 a和 a和b都为真时返回真,否则为假

||或or (逻辑或)

$a||$b

a 和 a和 a和b都为假时返回假,否则为真

xor(逻辑异或)

$axor$b

a 和 a和 a和b不相同时返回真,否则为假

!(逻辑非)

!$a

$a为真时!$a为假,$a为假时!$a为真

<?php
//使用utf-8编码,不然可能会出现乱码
header("Content-Type:text/html;charset=utf-8");

$a=true;
$b=false;

# 逻辑与,都为真时返回真,否则为假。(&&与and作用相同)
if($a and $b) //条件不成立
echo '两个都为真';
else
echo '至少有一个为假'; //输出
echo "<br/>";

# 逻辑或,都为假时返回假,否则为真。(||与or作用相同)
if ($a or $b) //条件成立
echo '至少有一个为真'; //输出
else
echo '两个都为假';
echo "<br/>";

# 逻辑异或,不相同时返回真
if($a xor $b) //条件成立
echo '$a不等于$b'; //输出
else
echo '$a等于$b';
echo "<br/>";

# 逻辑非,$a为真时,!$a为假
if(!$a) //条件不成立
echo '$a为假';
else
echo '$a为真'; //输出
?>

运算结果:

至少有一个为假
至少有一个为真
$a不等于$b
$a为真


这里的逻辑运算符和我们数学中的真假命题是一样的


补充:

<?php
$a = 5;
$b = 15;
//这里`=`(赋值)的优先级高于`and`,所以会先进行赋值运算,再进行`and`运算
$c = $a and ($b = 30);
//这里`=`(赋值)的优先级高于`or`,所以会先进行赋值运算,再进行`and`运算
$d = $a or ($b = 30);
?>


在PHP中运算符的优先级从高到低的顺序是:算数运算符>关系运算符>逻辑运算符


比较运算符

  • 用于比较两个数据的值,返回一个布尔类型的结果

运算符

意义

说明

<

小于

$a<$b

$a小于$b时,返回true,否则返回false

>

小于

$a>$b

$a大于$b时,返回true,否则返回false

<=

小于或等于

$a<=$b

$a小于或等于$b时,返回true,否则返回false

>=

大于或等于

$a>=$b

$a大于或等于$b时,返回true,否则返回false

==

相等

$a==$b

$a等于$b时,返回true,否则返回false

!=

不相等

$a!=$b

$a不等于$b时,返回true,否则返回false

===

恒等

$a===$b

$a与$b相等且数据类型相同时,返回true,否则返回false

!==

非恒等

$a!=$b

$a与$b值不相等或数据类型不相同时,返回true,否则返回false

<?php
//使用utf-8编码,不然可能会出现乱码
header("Content-Type:text/html;charset=utf-8");

$a=55;
$b=55.0;
$c=50;

# 判断$a是否大于$c
if($a>$c) //条件成立
echo '$a大于$c'; //输出
else
echo '$c大于$a';
echo "<br/>";

# 判断$a是否小于$c
if($a<$c) //条件不成立
echo '$a小于$c';
else
echo '$c小于$a'; //输出
echo "<br/>";

# 判断$a是否小于等于$c
if($a<=$c) //条件不成立
echo '$a小于或等于$c';
else
echo '$a大于$c'; //输出
echo "<br/>";

# 判断$a是否大于等于$c
if($a>=$c) //条件成立
echo '$a大于或等于$c'; //输出
else
echo '$a小于$c';
echo "<br/>";

# 判断$a是否等于$c
if($a==$c) //条件不成立
echo '$a等于$c';
else
echo '$a不等于$c'; //输出
echo "<br/>";

# 判断$a是否小于等于$c
if($a!=$c) //条件成立
echo '$a不等于$c'; //输出
else
echo '$a等于$c';
echo "<br/>";

if($a===$b) //条件不成立
echo '$a等于$b,且数据类型相同';
else
echo '$a不等于$b,或数据类型不相同'; //输出
echo "<br/>";

if($a!==$b) //条件成立
echo '$a不等于$b,或数据类型不相同'; //输出
else
echo '$a等于$b,且数据类型相同';
echo "<br/>";

?>

运行结果:

$a大于$c
$c小于$a
$a大于$c
$a大于或等于$c
$a不等于$c
$a不等于$c
$a不等于$b,或数据类型不相同
$a不等于$b,或数据类型不相同

短路运算

  • 如果一个条件由多个条件组成,若已经判断出整个条件的结果,则无需判断后面的条件


  • 在进行或运算时,第一个条件成立了,就不再判断第二个条件是否成立
  • 在进行与运时,第一个条件成立了,还需要判断第二个条件是否成立。如果第一个条件不成立,也不再判断第二个条件是否成立


三元运算符

  • 提供简单的逻辑判断
  • 格式:​​表达式1?表达式2:表达式3​
  • 如果表达式1成立,整个表达式的值为表达式2的值,否则为表达式3的值
<?php
//使用utf-8编码,不然可能会出现乱码
header("Content-Type:text/html;charset=utf-8");

$a=15;
$b=25;

# 首先判断$a是否大于$b,成立则输出$a的值,不成立则输出$b的值
$c=($a>$b)?$a:$b; //可以用来计算最大值
echo $c."<br/>";

# 首先判断$st是否为字符串类型,是则输出“我是坏坏!”,不是则输出“我不是字符串!”
$st="This is string!";
$d=(is_string($st))?"我是坏坏!":"我不是字符串!";
echo $d;
?>

运算符优先级

  • 与算术运算符中的先乘除后加减相同。可以加圆括号改变运算顺序

运算符

作用

结合方向

++、–

递增、递减

非结合

!、~

逻辑非、位求反

非结合

(int)(float)等

强制转换数据类型

非结合

*、/、%

乘、除、求余

左到右

+、-、.

加、减、拼接

左到右

<<、>>

位移

左到右

<=、>=

小于等于、大于等于

非结合

==、!=

等于、不等于

非结合

=== 、!==

恒等于、非恒等

左到右

&

位运算符 与

左到右

^

位运算符 异或

左到右

|

位运算符 或

左到右

&&

逻辑运算符 与

左到右

||

逻辑运算符 或

左到右

? :

三元运算符

左到右

=、+=、-=

赋值运算符 赋值、加、减

右到左

and

逻辑运算符 与

左到右

xor

逻辑运算符 异或

左到右

or

逻辑运算符 或

左到右

,

列表分割符

左到右

小结

  1. 算数运算符取模时,结果的符号与被除数相同,运算数中有小数时,去尾再运算
  2. 赋值运算符是先计算右边,再把值赋给左边的变量
  3. 逻辑运算符和比较运算符中,要注意短路运算
  4. 在涉及到运算符优先级时,可以多加括弧,降低出错概率


以上内容均属原创,如有不详或错误,敬请指出。


本文作者: 坏坏


举报

相关推荐

0 条评论