逻辑运算符比较简单,是我们人类进行逻辑思考时的一种方式。
我们把这些逻辑关系进行归纳和总结,下面表格中的:$x为条件一,$y 为条件二。进行说明:
逻辑与,中文解释为并且。可理解为,$x 并且 $y 都为真(true)的时候执行。
逻辑或,中文解释为或者。可以理解为,$x或者$y其中一个为真(true)的时候执行。
逻辑非,中文解释取反。如果$x的执为假(false),进行一次非操作。非假(false)就为真了,就可以执行真区间了。反推true,则执行假区间了。
逻辑异或,如果$x和$y相同则为false,不相同则为true。
举例 | 说明 | 详细说明 |
---|---|---|
$x and $y | 逻辑与(并且关系) | $x 和$y 为真则返回真 |
$x && $y | 同上 | 同上 |
$x or $y | 逻辑或 | $x,$y均为false时为假,其他情况全为真 |
同上 | 同上 | |
!$x | 逻辑非 | 取反,即true变为false,false变为true |
$x xor $y | 逻辑异或 | 相同取false,相异为true |
那我们来举几个例子来试试,你自己也要记得多做几次实验(可结合3.4.4这一章中的比较运算符自己写几个例子哟)。
逻辑与:
<?php
$x = true;
$y = false;
//逻辑与(并且),要求两个都为true才执行真区间,所以代码中执行假区间
if($x && $y){
echo '执行了真区间';
}else{
echo '执行了假区间';
}
?>
逻辑或:
<?php
$foo = false;
$bar = true;
//逻辑或,有一个为真则为真
if($foo || $bar){
echo '执行真区间';
}else{
echo '执行假区间';
}
?>
逻辑非:
<?php
$foo = false;
//逻辑非,把false变为了true
if(!$foo){
echo '执行真区间';
}else{
echo '执行假区间';
}
?>
【重点知识】短路
短路就是采用一个懒人模式来思考问题。
逻辑与的特性是:两边为true即为true,其他情况均为假。
逻辑或的特性是:两边为假均为假,其他情况全为真。
我们现在把自己想象成一个懒汉,非常非常懒。来思考逻辑与和逻辑或。可不可以这样理解:
逻辑与:如果前面第一个条件为false了,后面就可以不用执行了。
用代码表示:if($x && $y) 如果$x已经为false了,后面的$y 就没有执行必要了。
逻辑或:前面第一个条件为true了,后面就不用执行了。
用代码表示:if($x || $y) 如果$x已经为true了,后面的$y 就没有执行必要了。
我们写段代码来证明一下:
<?php
$x = false;
$y = 2;
if($x && $y++){
echo '真';
}else{
echo '假';
}
//结果还为2,说明没有执行$y++
echo $y;
?>
代码如下,将两个&符改为一个&符试试:
<?php
$x = false;
$y = 2;
if($x & $y++){
echo '真';
}else{
echo '假';
}
//再看看结果
echo $y;
?>
我们来看看短路的逻辑或:
<?php
$x = true;
$y = 2;
if($x || $y++){
echo '真';
}else{
echo '假';
}
//结果,因为$x已经为true了,肯定执行真区间没有必要执行$y++了
echo $y;
?>
改成一个 | 再看看执行结果
<?php
$x = true;
$y = 2;
if($x | $y++){
echo '真';
}else{
echo '假';
}
//自己运行对比结果
echo $y;
?>
上面的一段代码就是典型的短路应用的代码
exit 的意思是指在此处停止运行,退出。后面的PHP代码不再执行了。它有两种用法:
1,直接exit; 就是直接退出
2,exit(‘提示内容’),退出的时候还给出一段提示内容
三元运算符和其他运算符
此外还有一些特殊的运算符和符号,我们先来进行讲解。可能以后我们需要用到。
符号 | 说明 |
---|---|
$x? 真代码段:假代码段 | 判断是否为真假 ? 真情况 : 假情况; |
``(反引号) | 反引号中间插代命令,执行系统命令,等价于shell_exec函数 |
@ | 单行抑制错误,把这一行的错误不让它显示出来了,效率低不建议使用 |
=> | 数组下标访问符 |
-> | 对象访问符 |
instanceof | 判断某个对象是否来自某个类,如果是的返回true,如果不是返回false |
三元运算符,相当于是if...else结构。不过三元运算符的写法更加简洁,语法格式如下:
$x? 真代码段(只能写一句代码):假代码段(只能写一句代码);
代码如下:
<?php
$x = true;
$x ? $y = 5 : $y = 6;
//输出5
echo $y;
?>
反引号就更加特殊了,我们经常需要显示IP地址,在PHP里面可不可能显示我们windows的IP地址呢?用反引号,就可以执行我们的命令(不过有些虚拟服务器是禁止执行这些的命令脚本的):
<?php
echo '<pre>';
echo `ipconfig`;
echo '</pre>';
?>
上面的代码你执行看看效果,是不是显示出来了你机器的IP地址和一堆和IP相关的参数?
@符是指单行抑制错误,以后的章节我们还会讲解到。此处为了解级别。
<?php
//打开一个不存在的文件adfsafasdfasfasdfdsadf.txt,你运行一下会发现报错了。
//再前面再加上一个@符看看效果
$fp = fopen('adfsafasdfasfasdfdsadf.txt','r');
//@$fp = fopen('adfsafasdfasfasdfdsadf.txt','r');
?>
数组下标访问符:
<?php
$data = array('sina' =>'新浪' ,'sohu' => '搜狐');
?>
对象访问符->和instanceof :
<?php
//实例化一个对象
$obj = new StdClass();
//判断某对象是某由某个类实例化,如果是的则执行真
if($obj instanceof stdClass){
echo '真';
}else{
echo '假';
}
//向obj对象中追加一个成员属性为username
$obj -> username = '明月小窝';
echo $obj -> username;
?>
发表评论