PHP 8: PHP的运算符
本章将介绍PHP的运算符。
运算符这个问题在每种语言里都有,因为我们已经熟悉了编程语言里的一种或是多种,所以只需要了解一下就行了。
概括一下吧。
PHP运算符有很多种,看样子要比C/C++,C#等语言多多了。分别是:
- 算术运算符
- 赋值运算符
- 位运算符
- 比较运算符
- 错误控制运算符
- 执行运算符
- 递增/递减运算符
- 逻辑运算符
- 字符串运算符
- 数组运算符
- 类型运算符
这也是蛮多的,五花八门的。
算术运算符
|
例子 |
名称 |
结果 |
|
-$a |
取反 |
$a 的负值。 |
|
$a + $b |
加法 |
$a 和 $b 的和。 |
|
$a - $b |
减法 |
$a 和 $b 的差。 |
|
$a * $b |
乘法 |
$a 和 $b 的积。 |
|
$a / $b |
除法 |
$a 除以 $b 的商。 |
|
$a % $b |
取模 |
$a 除以 $b 的余数。 |
位运算符
|
例子 |
名称 |
结果 |
|
$a & $b |
And(按位与) |
将把 $a 和 $b 中都为 1 的位设为 1。 |
|
$a | $b |
Or(按位或) |
将把 $a 或者 $b 中为 1 的位设为 1。 |
|
$a ^ $b |
Xor(按位异或) |
将把 $a 和 $b 中不同的位设为 1。 |
|
~ $a |
Not(按位非) |
将 $a 中为 0 的位设为 1,反之亦然。 |
|
$a << $b |
Shift left(左移) |
将 $a 中的位向左移动 |
|
$a >> $b |
Shift right(右移) |
将 $a 中的位向右移动 |
比较运算符
|
例子 |
名称 |
结果 |
|
$a == $b |
等于 |
TRUE,如果 $a 等于 $b。 |
|
$a === $b |
全等 |
TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进) |
|
$a != $b |
不等 |
TRUE,如果 $a 不等于 $b。 |
|
$a <> $b |
不等 |
TRUE,如果 $a 不等于 $b。 |
|
$a !== $b |
非全等 |
TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进) |
|
$a < $b |
小与 |
TRUE,如果 $a 严格小于 $b。 |
|
$a > $b |
大于 |
TRUE,如果 $a 严格 $b。 |
|
$a <= $b |
小于等于 |
TRUE,如果 $a 小于或者等于 $b。 |
|
$a >= $b |
大于等于 |
TRUE,如果 $a 大于或者等于 $b。 |
递增/递减运算符
|
例子 |
名称 |
效果 |
|
++$a |
前加 |
$a 的值加一,然后返回 $a。 |
|
$a++ |
后加 |
返回 $a,然后将 $a 的值加一。 |
|
--$a |
前减 |
$a 的值减一, 然后返回 $a。 |
|
$a-- |
后减 |
返回 $a,然后将 $a 的值减一。 |
逻辑运算符
|
例子 |
名称 |
结果 |
|
$a and $b |
And(逻辑与) |
TRUE,如果 $a 与 $b 都为 TRUE。 |
|
$a or $b |
Or(逻辑或) |
TRUE,如果 $a 或 $b 任一为 TRUE。 |
|
$a xor $b |
Xor(逻辑异或) |
TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。 |
|
! $a |
Not(逻辑非) |
TRUE,如果 $a 不为 TRUE。 |
|
$a && $b |
And(逻辑与) |
TRUE,如果 $a 与 $b 都为 TRUE。 |
|
$a || $b |
Or(逻辑或) |
TRUE,如果 $a 或 $b 任一为 TRUE。 |
数组运算符
|
例子 |
名称 |
结果 |
|
$a + $b |
联合 |
$a 和 $b 的联合。 |
|
$a == $b |
相等 |
如果 $a 和 $b 具有相同的键/值对则为 |
|
$a === $b |
全等 |
如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 |
|
$a != $b |
不等 |
如果 $a 不等于 $b 则为 |
|
$a <> $b |
不等 |
如果 $a 不等于 $b 则为 |
|
$a !== $b |
不全等 |
如果 $a 不全等于 $b 则为 |
当然还有几种类型的没有列出,将在后面描述。我们先看看列出的吧。
如果没有对上面的运算符做特殊说明,那么说明它们和C#里的相似。
- 首先看看位运算里的左移(<<)或右移(>>),其实没有什么不同,只是符号不一样而已。
- 看看比较运算法里的“==”,“===”,这两个比较有意思,它们有什么区别呢?
看看一下代码:
看第2行,为什么0会等于“a”呢?奇怪了。之所以会相等,是因为在PHP里,如果整型和字符串比较时,字符串会自动的转化为数值。这里就会有一个问题:字符串转化为数值的原则是什么?原则是
1)如果包括“.”,“e”或“E”其中任何一个字符的话,字符串被当作
float来求值。否则就被当作整数。
2)该值由字符串最前面的部分决定。如果字符串以合法的数字数据开始,就用该数字作为其值,否则其值为
0(零)。合法数字数据由可选的正负号开始,后面跟着一个或多个数字(可选地包括十进制分数),后面跟着可选的指数。指数是一个“e”或者“E”后面跟着一个或多个数字。例如:
输出的结果是:
现在明白是怎么回事了吧。为什么“a”为0就是这个道理。
既然如此,还有一个“===”,3个等于符号,它表示不仅最后转化的数值相等,而且类型也应该相等。看看下面的代码:
输出结果为:
bool(false)
bool(true)
第6行之所以为true,是因为它们不仅数值相等,而且类型也一样。
3)看看逻辑运算,“或”和“与”居然有2种写法,如果你使用C/C++,C#,Java等语言的话,就用“&&"或”||"吧。如果你是VB的话,就用and,和or。当然你也可以2种都用。它们有什么区别呢?优先级的不同而已。”&&“与"||"比”and“和”or“优先级要高。
4).PHP多了一个数组运算符。有了上面的解释,相信它们不是很难了。
- 赋值运算符
和C#语言一样,也是利用”=“,也是利用二元符号赋值。例如:
$b='world';
$c='hello';
$c.=$b;//$c是"hello world"
?>
- 错误执行运算符
PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP
表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
如果激活了 track_errors
特性,表达式所产生的任何错误信息都被存放在变量
$php_errormsg
中。此变量在每次出错时都会被覆盖,所以如果想用它的话就要尽早检查。例如:
/* Intentional file error */
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");
// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.
?>
- 执行运算符
PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为外壳命令来执行,并将其输出信息返回(例如,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数 shell_exec() 相同。反引号位于键盘的”~“键那里。例如:
结果为:
递增/递减运算符
PHP 支持 C 风格的前/后递增与递减运算符。
注:
递增/递减运算符不影响布尔值。递减
NULL 值也没有效果,但是递增 NULL 的结果是 1。递增/递减运算符
例子 名称 效果 ++$a 前加 $a 的值加一,然后返回 $a。 $a++ 后加 返回 $a,然后将 $a 的值加一。 --$a 前减 $a 的值减一, 然后返回 $a。 $a-- 后减 返回 $a,然后将 $a 的值减 类型运算符
PHP 有一个类型运算符:instanceof。instanceof
用来测定一个给定的对象是否来自指定的对象类。instanceof 运算符是 PHP 5 引进的。在此之前用
is_a(),但是
is_a() 已经过时了,最好用 instanceof。
C#里是is,而Java是instanceof,和PHP一样。例如:
- 字符运算符
有两个字符串运算符。第一个是连接运算符(“.”),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(“.=”),它将右边参数附加到左边的参数后。这些在前面已经见到,就不举例了。
PHP 8: PHP的运算符的更多相关文章
- shell运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. expr 是一款表达式计算工具,使用它能完成表达式的求值操作. #!/bin/bash v ...
- SQL Server-聚焦APPLY运算符(二十七)
前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始 ...
- java中的移位运算符:<<,>>,>>>总结
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- .NET 基础 一步步 一幕幕[运算符、占位符、转义符]
运算符.占位符.转义符 好吧,在五局全胜之后,终于升到了三个钻,距离一个星星还有一大段距离,忽然想起来今天的博客还没写,果断坑队友,来写博客了....感觉以后还是每天更新一篇比较好.要不晚上就该熬 ...
- ECMASCript2015 提案 stage-3的对象展开运算符
看源码时看到如下的代码 export default { //通过mapActions将actions映射到methods里 methods: { ...mapActions([ 'updateSta ...
- JavaScript权威设计--JavaScript表达式与运算符,语句(简要学习笔记六)
1.delete是一元操作符,用来删除对象属性或者元素. var a={ x:1, y:2 } delete a.x; //删除x属性 “x”in a //false:a对象中已经不存在x属性 ale ...
- JavaScript权威设计--JavaScript表达式与运算符(简要学习笔记五)
1.3种原始表达式 1.直接量: 1.23 //数字直接量 “hello” //字符串直接量 ...
- LINQ to SQL语句(18)之运算符转换
运算符转换 1.AsEnumerable:将类型转换为泛型 IEnumerable 使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数.在 ...
- El表达式的关系运算符
El表达式的关系运算符: == 对应 eq != 对应 ne > 对应 gt < 对应 It
随机推荐
- Python标准库简介
在<Python语言参考手册>描述中的描述Python语法和语义,而本手冊主要介绍了Python标准库的内容和使用,也介绍了一些发行库里可选的组件库. Python标准库包括的内容是非常广 ...
- arcgis,mapinfo(mapxtreme),openlayers专业GIS系统开发
专业从事基于C#,WinForm ,WPF,Silverlight,WCF以及MS Sql Server 2000/2005/2008/2012 Oracle 9i/10g/11g数据库系统的ERP, ...
- VS2013上利用InstallShield2013LimitedEdition/C#生成安装包
1.文件-新建项目-其它项目类型-安装和部署 一開始是没有InstallShield2013LimitedEdition这个软件的.你须要去站点上填写信息而且下载 2.填写信息下载 訪问站点:http ...
- 安装、设置与启动MySql绿色版的方法
原文:安装.设置与启动MySql绿色版的方法 1.解压 mysql-noinstall-5.1.30-win32.zip(下载地址http://dev.mysql.com/downloads/mysq ...
- redis和redis php扩展安装(转)
redis是一个内存数据库,比memcache支持更丰富的value类型,新浪微博就使用redis来做缓存. redis的源码安装 wget http://download.redis.io/redi ...
- Java并发编程:线程池的使用(转)
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...
- JavaScript中五种常见运算符
一. in运算符 in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象.如果右侧的对象拥有一个名为左操作数值的属性名,那么表达式返回true.例如: var point ...
- hdu 4975 最大流问题解决队伍和矩阵,利用矩阵dp优化
//刚開始乱搞. //网络流求解,假设最大流=全部元素的和则有解:利用残留网络推断是否唯一, //方法有两种,第一种是深搜看看是否存在正边权的环.见上一篇4888 //至少四个点构成的环,另外一种是用 ...
- Git 常用命令手记 及 Github协同流程(转)
符号约定俗成:<xxx> 自定义内容xxx:[xxx] xxx为可选项:[<xxx>] 自定义内容xxx且为可选项. 说明/备注 命令 备注 保存更新 git add [-i] ...
- Android监视返回键
android在发展中,监视键返回到后事件经常被用来,在下面的例子来说明什么android返回键事件监听器. public class BackKeyTest extends Activity { / ...