0

0

PHP基础教程三之运算符

黄舟

黄舟

发布时间:2017-03-01 09:28:49

|

1533人浏览过

|

来源于php中文网

原创

本节讲解的内容

  • 算术运算符

  • 递增、递减运算符

  • 赋值运算符

  • 字符串运算符

  • 比较运算符

    立即学习PHP免费学习笔记(深入)”;

  • 位运算符

  • 逻辑运算符

  • 三元运算符

  • 错误控制运算符

前言

PHP的运算符是在php基础中必须要掌握的一个技能,它是php数据处理的桥梁,数据的各种运算都要用到运算符,比如加、减、乘、除,与、或等运算。

算术运算符

算术运算符:就是用来处理四则运算的符号,这是最简单,也最常用的符号,尤其是数字的处理,几乎都会使用到算术运算符号。

算术的运算符分类:

-$a 取反,$a的负值

$a = -1;
echo -$a;
-----结果-----
1

$a + $b 加法 $a和$b的和

$a = 12;
$b = 12;
$res = $a + $b;
echo $res;
-----结果-----
24

$a - $b 减法$a和$b的差

$a = 12;
$b = 6;
$res = $a - $b;
echo $res;
-----结果-----
6

$a * $b 乘法 $a和$b的积

$a = 2;
$b = 3;
$res = $a * $b;
echo $res;
-----结果-----
6

$a / $b 除法 $a和$b的商

$a = 12;
$b = 6;
$res = $a / $b;
echo $res;
-----结果-----
2

$a % $b 取模 $a和$b的余数;

$a = 3;
$b = 2;
$res = $a % $b;
echo $res;
-----结果-----
1

递增、递减运算符

  • ++$a:$a的值加一,然后返回 $a,这是前加 。

  • $a++ 返回 $a ,然后将 $a 的值加一,这是后加。

  • –$a $a 的值减一,然后返回 $a ,前减。

  • $a– 返回 $a ,然后将 $a 的值减一,后减。


++$a

$a = 1;
$b = ++$a;//先++,在进行赋值运算,等价于$a = $a + 1; $b = $a;
echo $b . '
' . $a; -----结果----- $b = 2 $a = 2

$a++

$a = 1;
$b = $a++;//先赋值,在进行++运算,等价于$b = $a; $a = $a + 1;
echo $b . '
' . $a; -----结果----- $b = 1 $a = 2

减减的情况和上面的情况一样。

赋值运算符

基本的赋值运算符是“=”,它实际上意味着把右边表达式的值赋给左边的运算数。

$a = 1;
$b = 'string';

还有情况是 +=-=/=

$a = 1;
$a += 2;//等价于$a = $a + 2;
echo $a;
-----结果-----
3

字符串运算符

有两个字符串。运算符是(“.”),它返回其左右参数连接后的字符串。

$a = 1;
$b = 2;
echo '$a = ' . $a . '  $b = ' . $b;
-----结果-----
$a = 1 $b = 2;

比较运算符

比较运算符是比较两个变量的情况,是否数值一样,是否数据类型一样,而比较出来的结果大多数是布尔类型的。

常见的比较运算符是:

  • $a == $b 等于 true 当$a == $b,这里一般只会去判断数值时候相等,不会去判断类型是否相等。

  • $a === $b  全等 true,如果 $a 等于 $b ,并且它们的类型也相同。

  • $a != $b 不等 ture,当两个变量的值不相等的时候返回true;

  • $a $b 不等 true,上面的情况还有一种写法,如果类型转换后 $a 不等于 $b 。

  • $a !== $b 不全等 true,如果 $a 不等于 $b ,或者它们的类型不同,注意两个变量有一个不相等的时候都返回true;(数值、类型)

  • $a

  • $a > $b 大于 TRUE ,如果 $a 严格大于$b 。

  • $a

  • $a >= $b 大于等于 TRUE ,如果 $a 大于或者等于 $b 。


    $a = 2;
    $b = '2';
    var_dump($a == $b); //判断两个数值是否相等,比较的时候会进行类型转换。
    -----结果-----
    bool(true)  
    var_dump($a === $b);//判断数值和类型是否相等,当时全等比较的时候,不会进行类型转换。
    -----结果-----
    bool(false)

位运算符

位运算符允许对整型数中指定的位以二进制的方式进行求值和操作。

在这之前我们先来说一说二进制

二进制简单介绍

在电脑中所有数存错在内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。

什么是二进制:二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。

十进制转换成二进制:“除以2取余,逆序排列”(除二取余法)

        商   余数
3 / 2 = 1.....1
1 / 2 = 0.....1
二进制(逆序排列):
11

12 / 2 = 6....0
6 / 2 = 3.....0
3 / 2 = 1.....1
1 / 2 = 0.....1
二进制:
1100

15 / 2 = 7....1
7 / 2 = 3.....1
3 / 2 = 1.....1
1 / 2 = 0.....1
二进制:
1111

二进制转换成十进制:“按权展开求和”

1111 = 1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 15
10 = 0 * 20 + 1 * 21 = 2

计算机中的符号位有三种表达形式

  • 原码

    PHP 网络编程技术与实例(曹衍龙)
    PHP 网络编程技术与实例(曹衍龙)

    PHP网络编程技术详解由浅入深,全面、系统地介绍了PHP开发技术,并提供了大量实例,供读者实战演练。另外,笔者专门为本书录制了相应的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码一起收录于配书光盘中。本书共分4篇。第1篇是PHP准备篇,介绍了PHP的优势、开发环境及安装;第2篇是PHP基础篇,介绍了PHP中的常量与变量、运算符与表达式、流程控制以及函数;第3篇是进阶篇,介绍

    下载
  • 反码

  • 补码

在进行位运算时,都是转换成补码进行运算的。

正数的二进制表示是二进制的最前面有一个0表示正数
正数的原码,反码,补码都一样(三码合一)

负数的二进制表示是二进制的最前面有一个1表示负数。
负数的原码是用公式求得的二进制数,反码是除了符号位,其他的都取反(1变0,0变1),补码是反码 + 1。

比如-1

原码 10000000 00000000 00000000 00000001 
反码 11111111 11111111 11111111 11111110 取反
补码 11111111 11111111 11111111 11111111 加1

至于为什么要写32位,我的理解是:整型占4个字节,每个字节8位,总共32位,其中一个符号位。

二进制的简单介绍就到这里


PHP中位运算符的分类

  • $a & $b  And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。

  • $a | $b  Or(按位或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。

  • $a ^ $b  Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。

  • ~ $a  Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。

  • $a

  • $a >> $b  Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

示例:

与(1 1 = 1; 1 0 = 0;0 0 = 0)

$a = 1 & 2;//进行“与”运算  两个都为1的时候为1,其他为0
// 1的补码
// 00000000 00000000 00000000 00000001
// 2的补码
// 00000000 00000000 00000000 00000010
// 结果
// 00000000 00000000 00000000 00000000 == 0
echo $a;
-----结果-----
0

或(1 1 = 1;1 0 = 1;0 0 = 0)

$a = 1 | 2;//进行“或”运算  至少有一个为1的时候为1,其他为0
// 1的补码
// 00000000 00000000 00000000 00000001
// 2的补码
// 00000000 00000000 00000000 00000010
// 结果
// 00000000 00000000 00000000 00000011 == 3
echo $a;
-----结果-----
3

异或(1 0 = 1; 1 1 = 0; 0 0 = 1)

$a = 3 ^ 2;//进行“异或”运算  一个为1,一个为0的时候为1,其他为0
// 1的补码
// 00000000 00000000 00000000 00000011
// 2的补码
// 00000000 00000000 00000000 00000010
// 结果
// 00000000 00000000 00000000 00000001 == 1
echo $a;
-----结果-----
1

取反(1 = 0; 0 = 1)注意符号位的变化。

$a = ~2;//进行“取反”运算  1变0,0变1
// 2的二进制
// 00000000 00000000 00000000 00000010
// 11111111 11111111 11111111 11111101 前面一个1,是负数
// 反码
// 11111111 11111111 11111111 11111100
// 原码
// 10000000 00000000 00000000 00000011 == -3
echo $a;
-----结果-----
-3

左移(将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”))

左移时右侧以零填充,符号位被移走意味着正负号不被保留。

$a = 1;
// 二进制:
// 00000000 00000000 00000000 00000001
// 左移时右侧以零填充,符号位被移走意味着正负号不被保留。
// 00000000 00000000 00000000 00000100 == 4
echo $a << 2;//将 $a 中的位向左移动2次
-----结果-----
4

右移时左侧以符号位填充,意味着正负号被保留。

$a = 4;
// 右移时左侧以符号位填充,意味着正负号被保留。 
// 00000000 00000000 00000000 00000100
// 00000000 00000000 00000000 00000001 == 1
echo $a >> 2;
-----结果-----
1

到这里位运算符算术基本说完了……

逻辑运算符

逻辑运算符也就是判断逻辑,它的返回结果一般是布尔类型,像与或非等;而PHP中的逻辑运算符有:

  • $a and $b And(逻辑与) TRUE ,如果 $a 和 $b 都为 TRUE 。

  • $a or $b Or(逻辑或) TRUE ,如果 $a 或 $b 任一为 TRUE 。

  • ! $a Not(逻辑非) TRUE ,如果 $a 不为 TRUE 。

  • $a && $b And(逻辑与) TRUE ,如果 $a 和 $b 都为 TRUE 。

  • $a || $b Or(逻辑或) TRUE ,如果 $a 或 $b 任一为 TRUE 。

逻辑与(当表达式的两边都为true的时候结果为真)

两个&符号:

$a = 2;
$b = 3;

if($a > 1 && $b > 2){ //左边的为true,右边的为true;两边都为true,结果为true;
    echo '与';
}
-----结果-----
与

一个&符号:

$a = 2;
$b = 3;

if($a > 1 & $b > 2){ //左边的为true,右边的为true;两边都为true,结果为true;
    echo '与';
}
-----结果-----
与

区别:两个&时:如果有一个逻辑判断表达式为假,则后面的逻辑运算就不会执行,俗称短路现象。

一个&:两边的都会判断。不管是真是假。

逻辑或(当左右两个表达式其中有一个是true的时候,为真)

两个|符号:

$a = 2;
$b = 4;

if($a > 1 || $b < 3){ //左边的为true,右边的为false;
    echo '或';
}
-----结果-----
或

一个|符号:

$a = 2;
$b = 4;

if($a > 1 | $b < 3){ //左边的为true,右边的为false;
    echo '或';
}
-----结果-----
或

区别:两个|时:如果有一个逻辑判断表达式为真,则后面的逻辑运算就不会执行,短路现象。

一个|:两边的都会判断。不管是真是假。

(!true = false; !false = true)

$a = true;
var_dump(!$a);
-----结果-----
bool(false)

三元运算符

语法为:条件表达式?表达式1:表达式2。
说明:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。
其逻辑为:“如果为真执行第一个,否则执行第二个。”

$a = 456;
$b = $a > 10 ? true : false; //问号前面的结果为真,执行第一个true;
var_dump($b);
-----结果-----
bool(true);

三元运算符可以说是if…else的简化版,在以后的开发中也会经常使用到的。

错误控制运算符

介绍: PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉

当你不想用户看到错误信息可以使用。

总结

说了这么多总算把运算符的大部分都说完了,其中还有数组运算符,类型运算符等,在数组和对象的时候会说。

 以上就是PHP基础教程三之运算符的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

0

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

20

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

62

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 8.6万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号