算术运算

概念

算数运算符,就是大家小学所学绝大多数知识:

符号 描述 示例
+ 加号 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

代码实验室

太简单,快速看一下就行

  1. <?php
  2. $x = 10;
  3. $y = 20;
  4. //10+20为30
  5. echo $x + $y;
  6. ?>
  1. <?php
  2. $x = 20;
  3. $y = 10;
  4. //20 -10 为10
  5. echo $x - $y;
  6. ?>
  1. <?php
  2. $x = 20;
  3. $y = 10;
  4. //20乘以10结果为200
  5. echo $x * $y;
  6. ?>
  1. <?php
  2. $x = 20;
  3. $y = 10;
  4. //20除以10结果为2
  5. echo $x / $y;
  6. ?>
  1. <?php
  2. $x = 10;
  3. $y = 3;
  4. //$x 不能整除3,得到的余数为1,所以结果输出为1
  5. echo $x % $y;
  6. ?>

与我们数学所学一样,也有优先级:先乘除,后加减。如果你想更明确的改变优先级,那就用()【小括号】,将想要优先的值给括起来。


赋值运算

概念

赋值运算,我们已经学过了。

我们在数学里面把 = (一个等号)叫作赋值运算符,即:把等号右边的值,赋值给等号左边的变量,左边的变量就为右边的值。

代码是从上到下运行的,因此赋值就可以从上至下的重复赋值:

  1. <?php
  2. $x = 5;
  3. $x = true;
  4. $x = '爱你';
  5. $x = 12.888;
  6. echo $x;
  7. ?>

那么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

代码

  1. <?php
  2. $x = 5;
  3. $y = 8;
  4. $x += $y;
  5. echo $x;
  6. ?>

其实这个没有什么可说的!


# 自加、自减运算

概念

自加自减,就是把自己加1,或者减1。

如果你学习过其他编程语言。你会发现,此处的用法又是计算机里面的一个规定。可以这样用,用起来更加简洁。

符号 说明
$x++ 先赋值后加
$x– 先赋值后减
++$x 先加后赋值
–$x 先减后赋值

代码

  1. <?php
  2. $x = 5;
  3. //先赋值后加:即先将$x的值赋值给$y。$x的值为5,所以将$x的值赋值给$y。$y也为5
  4. $y = $x++;
  5. //$x的结果输出为6,因为赋值给$y后,$x自己又把自己进行了+1操作。所以,$x的结果为6
  6. echo $x;
  7. ?>

比较一下

  1. <?php
  2. $x = 5;
  3. //先将$x自加1,$x等于5,自加1后结果为6。因此,$y的结果为6
  4. //自加后,再将结果6偷偷的赋值给自己$x
  5. $y = ++$x;
  6. //$x的结果输出也为6。因为$x执行+1完成后,将5+1的结果赋值给了自己
  7. echo $x;
  8. ?>

你再做实验,试试x–和–" role="presentation" style="position: relative;">x–和–x–和–x的结果是这样吗?

请回答,下面water+" role="presentation" style="position: relative;">water+water+paper的结果为多少?

  1. <?php
  2. $x = 5;
  3. $y = 6;
  4. $foo = $x++ + $x--;
  5. $bar = ++$y + ++$x;
  6. $cup = $x-- + $y--;
  7. $paper = ++$x + $x++;
  8. $water = $y-- + $x--;
  9. echo $water + $paper;
  10. ?>

# 比价运算符

## 概念

说明 符号
大于 >
小于 <
大于等于
=

小于等于 <=
不等于 != (不等的另外一种写法<>)
等于 ==
全等(判断类型等于) ===
全不等(判断类型不等于) !==

这个感觉也没有什么可说的

代码

  1. <?php
  2. $x = 5;
  3. $y = 6;
  4. //因为5大于6不成立,所以为错的。即为false执行了假区间
  5. if($x > $y){
  6. //真区间
  7. echo '变量x 大于 变量y,成立';
  8. }else{
  9. //假区间
  10. echo '变量x 大于 变量y,不成立';
  11. }
  12. ?>

重点是演示,等于(==)和全等于也叫判断类型等于(===)

  1. <?php
  2. $x = 5;
  3. $y = '5';
  4. if($x == $y){
  5. echo '结果为真';
  6. }else{
  7. echo '结果为假';
  8. }
  9. ?>

比较一下

  1. <?php
  2. $x = 5;
  3. $y = '5';
  4. if($x === $y){
  5. echo '结果为真';
  6. }else{
  7. echo '结果为假';
  8. }
  9. ?>

# 逻辑运算

逻辑思维能力,相当于物理电路中的开关的串行和并行

概念

下面表格中的:x为条件一," role="presentation" style="position: relative;">x为条件一,x为条件一,y 为条件二。进行说明:

  1. 逻辑与,中文解释为并且。可理解为,x并且" role="presentation" style="position: relative;">x并且x并且y 都为真(true)的时候执行。

  2. 逻辑或,中文解释为或者。可以理解为,x或者" role="presentation" style="position: relative;">x或者x或者y其中一个为真(true)的时候执行。

  3. 逻辑非,中文解释取反。如果$x的执为假(false),进行一次非操作。非假(false)就为真了,就可以执行真区间了。反推true,则执行假区间了。

  4. 逻辑异或,如果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

代码

  • 逻辑与
  1. <?php
  2. $x = true;
  3. $y = false;
  4. //逻辑与(并且),要求两个都为true才执行真区间,所以代码中执行假区间
  5. if($x && $y){
  6. echo '执行了真区间';
  7. }else{
  8. echo '执行了假区间';
  9. }
  10. ?>
  • 逻辑或
  1. <?php
  2. $foo = false;
  3. $bar = true;
  4. //逻辑或,有一个为真则为真
  5. if($foo || $bar){
  6. echo '执行真区间';
  7. }else{
  8. echo '执行假区间';
  9. }
  10. ?
  11. ```
  12. + 逻辑非
  13. ```php
  14. <?php
  15. $foo = false;
  16. //逻辑非,把false变为了true
  17. if(!$foo){
  18. echo '执行真区间';
  19. }else{
  20. echo '执行假区间';
  21. }
  22. ?>

【重点知识】短路

短路就是采用一个懒人模式来思考问题。

逻辑与的特性是:两边为true即为true,其他情况均为假。

逻辑或的特性是:两边为假均为假,其他情况全为真。

我们现在把自己想象成一个懒汉,非常非常懒。来思考逻辑与和逻辑或。可不可以这样理解:

逻辑与:如果前面第一个条件为false了,后面就可以不用执行了。

用代码表示:if(x &amp;&amp;" 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 就没有执行必要了。

我们写段代码来证明一下:

  1. <?php
  2. $x = false;
  3. $y = 2;
  4. if($x && $y++){
  5. echo '真';
  6. }else{
  7. echo '假';
  8. }
  9. //结果还为2,说明没有执行$y++
  10. echo $y;
  11. ?>

代码如下,将两个&符改为一个&符试试:

  1. <?php
  2. $x = false;
  3. $y = 2;
  4. if($x & $y++){
  5. echo '真';
  6. }else{
  7. echo '假';
  8. }
  9. //再看看结果
  10. echo $y;
  11. ?>

我们来看看短路的逻辑或:

  1. <?php
  2. $x = true;
  3. $y = 2;
  4. if($x || $y++){
  5. echo '真';
  6. }else{
  7. echo '假';
  8. }
  9. //结果,因为$x已经为true了,肯定执行真区间没有必要执行$y++了
  10. echo $y;
  11. ?>

改成一个 | 再看看执行结果

  1. <?php
  2. $x = true;
  3. $y = 2;
  4. if($x | $y++){
  5. echo '真';
  6. }else{
  7. echo '假';
  8. }
  9. //自己运行对比结果
  10. echo $y;
  11. ?>

典型的短路应用的代码

  1. <?php
  2. //如果为defined('AUTH')存在AUTH常量则为true,不访问后面的exit了。如果为false则执行exit
  3. defined('AUTH') or exit('存在安全因素不准访问');
  4. ?>

exit 的意思是指在此处停止运行,退出。后面的PHP代码不再执行了。它有两种用法:

1.直接exit; 就是直接退出

2.exit(‘提示内容’),退出的时候还给出一段提示内容


# 位运算

俱往昔,用二进制很少,还是自己本身没有那么厉害,俺不是科班出身

等以后用到位运算的时候,再来学习吧。

举例 说明 详细说明
a &amp;" 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&lt;&lt;" role="presentation" style="position: relative;">a<<a<<b 左移 将 a中的位向左移动" role="presentation" style="position: relative;">a中的位向左移动a中的位向左移动b 次(每一次移动都表示“乘以 2”)。
a&gt;&gt;" role="presentation" style="position: relative;">a>>a>>b 右移 将 a中的位向右移动" role="presentation" style="position: relative;">a中的位向右移动a中的位向右移动b 次(每一次移动都表示“除以 2”)。

均为二进制的运算

简单了解一下就行:

  1. <?php
  2. //$x二进制值为:
  3. $x = 5;
  4. //$y二进制值为:
  5. $y = 8;
  6. //结果为13
  7. echo $x ^ $y;
  8. ?>
变量 二进制值
$x 0101
$y 1000
异或结果 1101

异或解释:如果x,y两个值不相同,则异或结果为1。如果x,y两个值相同,异或结果为0。


# 运算符优先级

因为绝大多数人都不会去记运算符的优先级。

我们在小学的时候,优先级是先乘除后加减。想要改变运算的优先级加括号即可。

重点:不用记优先级,确定不了的时候号上括号把优先级标出来即可


# 三元运算符和其它运算符

概念

符号 说明
$x? 真代码段:假代码段 判断是否为真假 ? 真情况 : 假情况;
``(反引号) 反引号中间插代命令,执行系统命令,等价于shell_exec函数
@ 单行抑制错误,把这一行的错误不让它显示出来了,效率低不建议使用
=> 数组下标访问符
-> 对象访问符
instanceof 判断某个对象是否来自某个类,如果是的返回true,如果不是返回false

怎么说呢?很重要,但是对于web前端的各位学生又不是那么重要,但是你必须要做到熟悉或者掌握程度

三元运算符,相当于是if…else结构。不过三元运算符的写法更加简洁,语法格式如下:

$x? 真代码段(只能写一句代码):假代码段(只能写一句代码);

  1. <?php
  2. $x = true;
  3. $x ? $y = 5 : $y = 6;
  4. //输出5
  5. echo $y;
  6. ?>

反引号就更加特殊了,我们经常需要显示IP地址,在PHP里面可不可能显示我们windows的IP地址呢?用反引号,就可以执行我们的命令(不过有些虚拟服务器是禁止执行这些的命令脚本的):

  1. <?php
  2. echo '<pre>';
  3. echo `ipconfig`;
  4. echo '</pre>';
  5. ?>

上面的代码你执行看看效果,是不是显示出来了你机器的IP地址和一堆和IP相关的参数?

@符是指单行抑制错误,以后的章节我们还会讲解到。了解即可

  1. <?php
  2. //打开一个不存在的文件 pangsir.txt,你运行一下会发现报错了。
  3. //再前面再加上一个@符看看效果
  4. $fp = fopen('pangsir.txt','r');
  5. //@$fp = fopen('pangsir.txt','r');
  6. ?>

数组下标访问符,以后也会有一章讲解,此处了解一下就可以了:

  1. <?php
  2. $data = array('sina' =>'新浪' ,'sohu' => '搜狐');
  3. ?>

对象访问符->和instanceof 都是了解级别

  1. <?php
  2. //实例化一个对象
  3. $obj = new StdClass();
  4. //判断某对象是某由某个类实例化,如果是的则执行真
  5. if($obj instanceof stdClass){
  6. echo '真';
  7. }else{
  8. echo '假';
  9. }
  10. //向obj对象中追加一个成员属性为username
  11. $obj -> username = '四海兴唐';
  12. echo $obj -> username;
  13. ?>

上述:web前端的同学了解即可!!!

前端PHP入门-006-表达式和运算符的更多相关文章

  1. Python基础0:变量 赋值 表达式和运算符

    变量: 前面我们在使用print()输出内容的时候,如果内容很长,后面要再次输出的时候,就需重新在输入一遍. 如果给输出的内容起个简单的别名.这样我们用简短的别名来代替长内容,下次要输出的时候就直接使 ...

  2. Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句

    第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...

  3. Javascript学习2 - Javascript中的表达式和运算符

    原文:Javascript学习2 - Javascript中的表达式和运算符 Javascript中的运算符与C/C++中的运算符相似,但有几处不同的地方,相对于C/C++,也增加了几个不同的运算符, ...

  4. JavaScript深入浅出补充——(一)数据类型,表达式和运算符

    项目基本做完,在进行下一阶段学习之前先看视频学习回顾一下JavaScript 一.数据类型 JavaScript中有五种原始类型和一种对象类型 JavaScript弱类型语言中隐式转换 num-0 字 ...

  5. C#图解教程 第八章 表达式和运算符

    表达式和运算符 表达式字面量 整数字面量实数字面量字符字面量字符串字面量 求值顺序 优先级结合性 简单算术运算符求余运算符关系比较运算符和相等比较运算符递增运算符和递减运算符条件逻辑运算符逻辑运算符移 ...

  6. 笔记《JavaScript 权威指南》(第6版) 分条知识点概要3—表达式和运算符

    [表达式和运算符]原始表达式,初始化表达式(对象和数组的),函数定义表达式,属性访问表达式,调用表达式,对象创建表达式,运算符概述,算术表达式,关系表达式,逻辑表达式,赋值表达式,表达式计算,其他运算 ...

  7. Python3基础-表达式和运算符

    表达式和运算符 什么是表达式? 1+2*3就是一个表达式,这里的加号和乘号叫做运算符,1.2.3叫做操作数. 1+2*3经过计算后得到的结果是7,我们可以将计算结果存放在一个变量里,result=1+ ...

  8. Python --表达式和运算符

    表达式 由一个或者几个数字或者变量和运算符组合成的一行代码 通常会返回一个结果 运算符 由一个以上的值经过变化得到新值的过程就叫做运算 用于运算的符号称为运算符 运算符的分类: 算数运算符 比较或者关 ...

  9. 菜鸟笔记:javascript基础之表达式和运算符

    4.1 原始表达式 原始表达式是最简单的表达式~它不再包含其他表达式.它包含:直接量(程序中直接显示出来的数据值.)常量(程序中不会被修改的量)变量. 4.2 对象和数组的初始化表达式 对象和数组初始 ...

  10. javascript 核心语言笔记 4 - 表达式和运算符

    表达式(expression)是 JavaScript 中的一个短语(phrases),JavaScript 解释器会将其计算(evaluate)出一个结果.程序中的常量.变量名.数组访问等都是表达式 ...

随机推荐

  1. scrum立会报告+燃尽图(第二周第七次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2252 一.小组介绍 组名:杨老师粉丝群 组长:乔静玉 组员:吴奕瑶.公冶 ...

  2. NSURLErrorDomain错误代码

    kCFURLErrorUnknown = -998, kCFURLErrorCancelled = -999, kCFURLErrorBadURL = -1000, kCFURLErrorTimedO ...

  3. Lucene 分词

    在Lucene中很多数据是通过Attribute进行存储的 步骤是同过TokenStrem获取文本信息流 TokenStream stream = a.tokenStream("conten ...

  4. scala程序运行的几种方式

    HelloWorld简单实例 object HelloWorld{ def main(args:Array[String]){ println("HelloWorld") } } ...

  5. OpenLayers 3 入门教程

    OpenLayers 3 入门教程摘要OpenLayers 3对OpenLayers网络地图库进行了根本的重新设计.版本2虽然被广泛使用,但从JavaScript开发的早期发展阶段开始,已日益现实出它 ...

  6. Java实现的词频统计

    要求: 1.读取文件: 2.记录出现的词汇及出现频率: 3.按照频率降序排列: 4.输出结果. 概要: 1.读取的文件路径是默认的,为了方便调试,将要统计的文章.段落复制到文本中即可:2.只支持英文: ...

  7. 自签证书 doesn't match any of the subject alternative names

    出现这个的原因是https中的域名或者IP,与证书中登记的不一致. 如果是自签证书的话,可以根据具体需要重新生成证书. 还有一种解决方案是在java中跳过这个检查. 绕过检查分两类,一个是绕过证书在C ...

  8. 使用salt-cloud创建虚拟机

    salt-cloud也是基于openstack来做的,它可以支持多种云的使用.比如:Aliyun.Azure.DigitalOcean.EC2.Google Compute Engine.HP Clo ...

  9. UVA12545_Bits Equalizer

    题目意思很简单,给你两个串,第一个串为0,1或者?,第二个串为0,1, 每次你可以对第一个串进行三种操作,1.0变为1:2.?变为0或者1:3.交换任意两个数的位置. 现在问你能否把第一个串变为第一个 ...

  10. json 当集合类型的字符串变成集合时候 里面有map类型的转换操作