前端PHP入门-006-表达式和运算符
算术运算
概念
算数运算符,就是大家小学所学绝大多数知识:
| 符号 | 描述 | 示例 |
|---|---|---|
| + | 加号 | x+" role="presentation" style="position: relative;">x+x+y |
| - | 减号 | x−" role="presentation" style="position: relative;">x−x−y |
| * | 乘号 | x∗" role="presentation" style="position: relative;">x∗x∗y |
| / | 除号 | x/" role="presentation" style="position: relative;">x/x/y |
| % | 取余 | x" role="presentation" style="position: relative;">xxy |
代码实验室
太简单,快速看一下就行
<?php$x = 10;$y = 20;//10+20为30echo $x + $y;?>
<?php$x = 20;$y = 10;//20 -10 为10echo $x - $y;?>
<?php$x = 20;$y = 10;//20乘以10结果为200echo $x * $y;?>
<?php$x = 20;$y = 10;//20除以10结果为2echo $x / $y;?>
<?php$x = 10;$y = 3;//$x 不能整除3,得到的余数为1,所以结果输出为1echo $x % $y;?>
与我们数学所学一样,也有优先级:先乘除,后加减。如果你想更明确的改变优先级,那就用()【小括号】,将想要优先的值给括起来。
赋值运算
概念
赋值运算,我们已经学过了。
我们在数学里面把 = (一个等号)叫作赋值运算符,即:把等号右边的值,赋值给等号左边的变量,左边的变量就为右边的值。
代码是从上到下运行的,因此赋值就可以从上至下的重复赋值:
<?php$x = 5;$x = true;$x = '爱你';$x = 12.888;echo $x;?>
那么PHP的赋值运算符还有几个:
| 符号 | 举例 | 等价于 |
|---|---|---|
| += | x+=" role="presentation" style="position: relative;">x+=x+=y | x=" role="presentation" style="position: relative;">x=x=x + $y |
| -= | x−=" role="presentation" style="position: relative;">x−=x−=y | x=" role="presentation" style="position: relative;">x=x=x - $y |
| *= | x∗=" role="presentation" style="position: relative;">x∗=x∗=y | x=" role="presentation" style="position: relative;">x=x=x * $y |
| /= | x/=" role="presentation" style="position: relative;">x/=x/=y | x=" role="presentation" style="position: relative;">x=x=x / $y |
| %= | x" role="presentation" style="position: relative;">xxy | x=" role="presentation" style="position: relative;">x=x=x % $y |
| .= | x.=" role="presentation" style="position: relative;">x.=x.=y | x=" role="presentation" style="position: relative;">x=x=x . $y |
代码
<?php$x = 5;$y = 8;$x += $y;echo $x;?>
其实这个没有什么可说的!
# 自加、自减运算
概念
自加自减,就是把自己加1,或者减1。
如果你学习过其他编程语言。你会发现,此处的用法又是计算机里面的一个规定。可以这样用,用起来更加简洁。
| 符号 | 说明 |
|---|---|
| $x++ | 先赋值后加 |
| $x– | 先赋值后减 |
| ++$x | 先加后赋值 |
| –$x | 先减后赋值 |
代码
<?php$x = 5;//先赋值后加:即先将$x的值赋值给$y。$x的值为5,所以将$x的值赋值给$y。$y也为5$y = $x++;//$x的结果输出为6,因为赋值给$y后,$x自己又把自己进行了+1操作。所以,$x的结果为6echo $x;?>
比较一下
<?php$x = 5;//先将$x自加1,$x等于5,自加1后结果为6。因此,$y的结果为6//自加后,再将结果6偷偷的赋值给自己$x$y = ++$x;//$x的结果输出也为6。因为$x执行+1完成后,将5+1的结果赋值给了自己echo $x;?>
你再做实验,试试x–和–" role="presentation" style="position: relative;">x–和–x–和–x的结果是这样吗?
请回答,下面water+" role="presentation" style="position: relative;">water+water+paper的结果为多少?
<?php$x = 5;$y = 6;$foo = $x++ + $x--;$bar = ++$y + ++$x;$cup = $x-- + $y--;$paper = ++$x + $x++;$water = $y-- + $x--;echo $water + $paper;?>
# 比价运算符
## 概念
| 说明 | 符号 |
|---|---|
| 大于 | > |
| 小于 | < |
| 大于等于 |
= |
| 小于等于 | <= |
| 不等于 | != (不等的另外一种写法<>) |
| 等于 | == |
| 全等(判断类型等于) | === |
| 全不等(判断类型不等于) | !== |
这个感觉也没有什么可说的
代码
<?php$x = 5;$y = 6;//因为5大于6不成立,所以为错的。即为false执行了假区间if($x > $y){//真区间echo '变量x 大于 变量y,成立';}else{//假区间echo '变量x 大于 变量y,不成立';}?>
重点是演示,等于(==)和全等于也叫判断类型等于(===)
<?php$x = 5;$y = '5';if($x == $y){echo '结果为真';}else{echo '结果为假';}?>
比较一下
<?php$x = 5;$y = '5';if($x === $y){echo '结果为真';}else{echo '结果为假';}?>
# 逻辑运算
逻辑思维能力,相当于物理电路中的开关的串行和并行
概念
下面表格中的:x为条件一," role="presentation" style="position: relative;">x为条件一,x为条件一,y 为条件二。进行说明:
逻辑与,中文解释为并且。可理解为,x并且" role="presentation" style="position: relative;">x并且x并且y 都为真(true)的时候执行。
逻辑或,中文解释为或者。可以理解为,x或者" role="presentation" style="position: relative;">x或者x或者y其中一个为真(true)的时候执行。
逻辑非,中文解释取反。如果$x的执为假(false),进行一次非操作。非假(false)就为真了,就可以执行真区间了。反推true,则执行假区间了。
逻辑异或,如果x和" role="presentation" style="position: relative;">x和x和y相同则为false,不相同则为true。
| 举例 | 说明 | 详细说明 |
|---|---|---|
| xand" role="presentation" style="position: relative;">xandxandy | 逻辑与(并且关系) | x和" role="presentation" style="position: relative;">x和x和y 为真则返回真 |
$x && $y |
同上 | 同上 |
| xor" role="presentation" style="position: relative;">xorxory | 逻辑或 | x," role="presentation" style="position: relative;">x,x,y均为false时为假,其他情况全为真 |
$x ‖ $y |
同上 | 同上 |
| !$x | 逻辑非 | 取反,即true变为false,false变为true |
$x xor $y |
逻辑异或 | 相同取false,相异为true |
代码
- 逻辑与
<?php$x = true;$y = false;//逻辑与(并且),要求两个都为true才执行真区间,所以代码中执行假区间if($x && $y){echo '执行了真区间';}else{echo '执行了假区间';}?>
- 逻辑或
<?php$foo = false;$bar = true;//逻辑或,有一个为真则为真if($foo || $bar){echo '执行真区间';}else{echo '执行假区间';}?```+ 逻辑非```php<?php$foo = false;//逻辑非,把false变为了trueif(!$foo){echo '执行真区间';}else{echo '执行假区间';}?>
【重点知识】短路
短路就是采用一个懒人模式来思考问题。
逻辑与的特性是:两边为true即为true,其他情况均为假。
逻辑或的特性是:两边为假均为假,其他情况全为真。
我们现在把自己想象成一个懒汉,非常非常懒。来思考逻辑与和逻辑或。可不可以这样理解:
逻辑与:如果前面第一个条件为false了,后面就可以不用执行了。
用代码表示:if(x &&" role="presentation" style="position: relative;">x &&x &&y) 如果x已经为false了,后面的" role="presentation" style="position: relative;">x已经为false了,后面的x已经为false了,后面的y 就没有执行必要了。
逻辑或:前面第一个条件为true了,后面就不用执行了。
用代码表示:if(x||" role="presentation" style="position: relative;">x||x||y) 如果x已经为true了,后面的" role="presentation" style="position: relative;">x已经为true了,后面的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;?>
典型的短路应用的代码
<?php//如果为defined('AUTH')存在AUTH常量则为true,不访问后面的exit了。如果为false则执行exitdefined('AUTH') or exit('存在安全因素不准访问');?>
exit 的意思是指在此处停止运行,退出。后面的PHP代码不再执行了。它有两种用法:
1.直接exit; 就是直接退出
2.exit(‘提示内容’),退出的时候还给出一段提示内容
# 位运算
俱往昔,用二进制很少,还是自己本身没有那么厉害,俺不是科班出身
等以后用到位运算的时候,再来学习吧。
| 举例 | 说明 | 详细说明 |
|---|---|---|
| a &" role="presentation" style="position: relative;">a &a &b | and(按位与) | 将把 a和" role="presentation" style="position: relative;">a和a和b 中都为 1 的位设为 1 |
$a | $b |
Or(按位或) | 将把 a和" role="presentation" style="position: relative;">a和a和b 中任何一个为 1 的位设为 1。 |
| a ^" role="presentation" style="position: relative;">a ^a ^b | xor(按位异或) | 将把 a和" role="presentation" style="position: relative;">a和a和b 中一个为 1 另一个为 0 的位设为 1。 |
| ~ $a | Not(按位取反) | 将 $a 中为 0 的位设为 1,反之亦然。 |
| a<<" role="presentation" style="position: relative;">a<<a<<b | 左移 | 将 a中的位向左移动" role="presentation" style="position: relative;">a中的位向左移动a中的位向左移动b 次(每一次移动都表示“乘以 2”)。 |
| a>>" role="presentation" style="position: relative;">a>>a>>b | 右移 | 将 a中的位向右移动" role="presentation" style="position: relative;">a中的位向右移动a中的位向右移动b 次(每一次移动都表示“除以 2”)。 |
均为二进制的运算
简单了解一下就行:
<?php//$x二进制值为:$x = 5;//$y二进制值为:$y = 8;//结果为13echo $x ^ $y;?>
| 变量 | 二进制值 |
|---|---|
| $x | 0101 |
| $y | 1000 |
| 异或结果 | 1101 |
异或解释:如果x,y两个值不相同,则异或结果为1。如果x,y两个值相同,异或结果为0。
# 运算符优先级
因为绝大多数人都不会去记运算符的优先级。
我们在小学的时候,优先级是先乘除后加减。想要改变运算的优先级加括号即可。
重点:不用记优先级,确定不了的时候号上括号把优先级标出来即可
# 三元运算符和其它运算符
概念
| 符号 | 说明 |
|---|---|
| $x? 真代码段:假代码段 | 判断是否为真假 ? 真情况 : 假情况; |
| ``(反引号) | 反引号中间插代命令,执行系统命令,等价于shell_exec函数 |
| @ | 单行抑制错误,把这一行的错误不让它显示出来了,效率低不建议使用 |
| => | 数组下标访问符 |
| -> | 对象访问符 |
| instanceof | 判断某个对象是否来自某个类,如果是的返回true,如果不是返回false |
怎么说呢?很重要,但是对于web前端的各位学生又不是那么重要,但是你必须要做到熟悉或者掌握程度
三元运算符,相当于是if…else结构。不过三元运算符的写法更加简洁,语法格式如下:
$x? 真代码段(只能写一句代码):假代码段(只能写一句代码);
<?php$x = true;$x ? $y = 5 : $y = 6;//输出5echo $y;?>
反引号就更加特殊了,我们经常需要显示IP地址,在PHP里面可不可能显示我们windows的IP地址呢?用反引号,就可以执行我们的命令(不过有些虚拟服务器是禁止执行这些的命令脚本的):
<?phpecho '<pre>';echo `ipconfig`;echo '</pre>';?>
上面的代码你执行看看效果,是不是显示出来了你机器的IP地址和一堆和IP相关的参数?
@符是指单行抑制错误,以后的章节我们还会讲解到。了解即可
<?php//打开一个不存在的文件 pangsir.txt,你运行一下会发现报错了。//再前面再加上一个@符看看效果$fp = fopen('pangsir.txt','r');//@$fp = fopen('pangsir.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;?>
上述:web前端的同学了解即可!!!
前端PHP入门-006-表达式和运算符的更多相关文章
- Python基础0:变量 赋值 表达式和运算符
变量: 前面我们在使用print()输出内容的时候,如果内容很长,后面要再次输出的时候,就需重新在输入一遍. 如果给输出的内容起个简单的别名.这样我们用简短的别名来代替长内容,下次要输出的时候就直接使 ...
- Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句
第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...
- Javascript学习2 - Javascript中的表达式和运算符
原文:Javascript学习2 - Javascript中的表达式和运算符 Javascript中的运算符与C/C++中的运算符相似,但有几处不同的地方,相对于C/C++,也增加了几个不同的运算符, ...
- JavaScript深入浅出补充——(一)数据类型,表达式和运算符
项目基本做完,在进行下一阶段学习之前先看视频学习回顾一下JavaScript 一.数据类型 JavaScript中有五种原始类型和一种对象类型 JavaScript弱类型语言中隐式转换 num-0 字 ...
- C#图解教程 第八章 表达式和运算符
表达式和运算符 表达式字面量 整数字面量实数字面量字符字面量字符串字面量 求值顺序 优先级结合性 简单算术运算符求余运算符关系比较运算符和相等比较运算符递增运算符和递减运算符条件逻辑运算符逻辑运算符移 ...
- 笔记《JavaScript 权威指南》(第6版) 分条知识点概要3—表达式和运算符
[表达式和运算符]原始表达式,初始化表达式(对象和数组的),函数定义表达式,属性访问表达式,调用表达式,对象创建表达式,运算符概述,算术表达式,关系表达式,逻辑表达式,赋值表达式,表达式计算,其他运算 ...
- Python3基础-表达式和运算符
表达式和运算符 什么是表达式? 1+2*3就是一个表达式,这里的加号和乘号叫做运算符,1.2.3叫做操作数. 1+2*3经过计算后得到的结果是7,我们可以将计算结果存放在一个变量里,result=1+ ...
- Python --表达式和运算符
表达式 由一个或者几个数字或者变量和运算符组合成的一行代码 通常会返回一个结果 运算符 由一个以上的值经过变化得到新值的过程就叫做运算 用于运算的符号称为运算符 运算符的分类: 算数运算符 比较或者关 ...
- 菜鸟笔记:javascript基础之表达式和运算符
4.1 原始表达式 原始表达式是最简单的表达式~它不再包含其他表达式.它包含:直接量(程序中直接显示出来的数据值.)常量(程序中不会被修改的量)变量. 4.2 对象和数组的初始化表达式 对象和数组初始 ...
- javascript 核心语言笔记 4 - 表达式和运算符
表达式(expression)是 JavaScript 中的一个短语(phrases),JavaScript 解释器会将其计算(evaluate)出一个结果.程序中的常量.变量名.数组访问等都是表达式 ...
随机推荐
- 扩展Lucas定理 扩展Lucas板子
题意概述:多组询问,给出N,K,M,要求回答C(N,K)%M,1<=N<=10^18,1<=K<=N,2<=M<=10^6 分析: 模数不为质数只能用扩展Lucas ...
- Scrum立会报告+燃尽图(十月十七日总第八次):分配Alpha阶段任务
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...
- Log4Net的使用研究(一)
等待研究中………… 20160421 标题:C#使用Log4Net记录日志 文章地址: http://www.cnblogs.com/wangsaiming/archive/2013/01/11/ ...
- 安装DHCP 服务器 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码
DHCP服务详解 前言:动态主机配置协议,给局域网内的主机分配IP地址,子网掩码,网关,DNS ARP协议 arp: address resolveing protocol (地址解析协议) 实现:I ...
- 0302思考&回答
看完这两个网页,我们可以看出it行业始终是一门热门行业,在现在这个人潮汹涌的人才市场,面对严峻的就业形势,我们应该拿什么去参见招聘?人多而工作职位有限,这警醒我们必须拥有一技之长,否则则会被淘汰.如果 ...
- Matlab中TCP通讯-实现外部程序提供优化目标函数解
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Matlab中TCP通讯-实现外部程序提供优化目标函数解 本文地址:http://te ...
- RFID标签、读卡器、终端、接口的概念
RFID标签:(引用)RFID无线射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境.RFID技术可识别高速运动物体并可同时 ...
- Java中TimeZone类的常用方法
一.TimeZone类的定义 TimeZone类是一个抽象类,主要包含了对于时区的各种操作,可以进行计算时间偏移量或夏令时等操作 二.TimeZone类的常用方法 1.getAvailableIDs( ...
- HDU 3579——Hello Kiki
好久没写什么数论,同余之类的东西了. 昨天第一次用了剩余定理解题,今天上百度搜了一下hdu中国剩余定理.于是就发现了这个题目. 题目的意思很简单.就是告诉你n个m[i],和n个a[i].表示一个数对m ...
- HDU 4767——Bell
昨天比赛被虐的这个题目. 今天听斌牛讲过他的思路后就A掉了. 题目的意思是要你求出bell数的第n项对95041567取模. 首先,95041567=31*37*41*43*47: 然后取模就是先分别 ...