运算


1、比较运算符:
> 大于
< 小于
>= 大于等于
<= 小于等于

!= 不等于
== 等于
=== 全等于(不仅值相等,连变量类型也相等!)
!== 不全等于

下面的true是布尔值类型,布尔值只有true和false,与数字5压根不是一个世界的东西,又谈何比较呢?
$a=true;
$b=5;
if($a == $b){
echo '$a=5';  //代码段1
}else{
echo'$a不等于5';  //代码段2
}
最后输出结果:$a=5
答:不同类型的比较,程序会转换成同一个类型进行比较,如上题会把数字5转换成布尔值,
在PHP程序中空字符串 ''、 false、空数组、NULL类型、整数或者浮点数为0 或者 空标生成SimpleXML类型都为false类型,
其余为true
如下题目:
$a='';
$b=5;
if($a == $b){
echo '$a=5';//代码段1
}else{
echo'$a不等于5';//代码段2
}
最后输出结果$a不等于5.(判断结果为 真/true 就执行代码段1,判断结果为 假/false 则执行代码段2


2、逻辑运算符:
逻辑或 || or
逻辑与 && and

$a = $b && $c == 'bmw'
如果这样写,谁先结合呢?

牵涉到运算优先级的问题,我们推荐,在多个量进行运算时候,需要先运算的单元使用()包起来。
这样使程序易读,易理解;不容易产生歧义。
请注意:写程序是为了更好地使用和维护,一定要让程序尽量的清晰,无歧义,好理解;而不要去炫耀技巧。


//结合逻辑运算符以及赋值运算符
$a = 3;
$b = 7;
if(($a = 8) || ($b = 9)){
$a = $a + 1;
$b = $b + 1;
}
echo $a,'___',$b,'<hr />';      //9___8

_____________________________________________________________________________

 

$a = 3;
$b = 7;
if(($a = 8) && ($b = 9)){
$a = $a + 1;
$b = $b + 1;
}
echo $a,'____',$b,'<hr />';     //9___10

_____________________________________________________________________________

$a = 6;
$b = 5;
if(($a > 3) && ($b =99)){
echo $a,'__',$b,'<br />';
}else{
echo $a,'__',$b,'<br />';
}

_____________________________________________________________________________


$a = 3;
$b = 5;
if($a == 3 && $b > 5 || $a > 3 && $b == 5){
echo 'aaa';
}else{
echo 'bbb';
}

_____________________________________________________________________________
$a = 6;
$b = 5;
if(($a > 3) && ($b =99)){
echo $a,'__',$b,'<br />';
}else{
echo $a,'__',$b,'<br />';
}
echo $a,'__',$b,'<hr />';

 

下面表达式为了证明逻辑运算的优先级 && 的优先级比 || 高,但是开发中,不推荐这么写
$a = 3;
$b = 5;
if($a == 3 && $b > 5 || $a > 3 && $b == 5){
echo 'aaa';
}else{
echo 'bbb';
}
3、逻辑反
一个命题如果是真命题,则其反命题是 假命题。
$a = true;
if($a){
echo 'hello';
}else{
echo 'world';
}
echo '<br />';

_____________________________________________________________________________
if(!$a){
echo 'hello';
}else{
echo 'world';
}

4、异或运算 xor
异或是指,两个条件必须“一个真,一个假,才为真”
//异或运算
$li = '男';
$mei = '女';
if(($li == '男') xor ($mei == '男')){
echo '可以结婚';
}else{
echo '法律禁止,请去北欧';
}

5、三元运算

例题1:

$res = ($user !=''?$user:'游客');
echo $res;

 

例题2:

$user = '';

echo '<br />';
echo $user!=''?$user:'游客';

程序如果没有三元运算符,可以用什么代替?

可以用if/else代替,
三元只是一个简化的写法,而且效率没有if else高

6、递增递减运算符
递增递减运算符也是一些场景简化写法,就算没有递增递减,也不会影响我们写程序。
分析:$b+1是一个算术运算,算出的结果是3,注意,这个3是一个算出结果,和$b没有关系。
这个算出的结果值给了$a,
因此,$a为3,$b为2.

//递增递减运算符
例题1:
$b = 2;
$a = $b + 1;
echo $a,'__',$b;
echo '<br />';


例题2:
$b = 2;
$a = $b++;
echo $a,'__',$b,'<br />';

 

 

posted @ 2020-11-06 16:53  柳三千  阅读(138)  评论(1)    收藏  举报