PHP 运算符 operator

赋值运算符

= 将右边的结果(变量,数据,常量)保存到内存的某个位置,然后将位置的内存地址赋值给左侧的变量

算术运算符

  • +
  • -
  • *
  • /
  • 取余 %

注意:除法和取余的第二个参数不能为 0

// 连贯赋值运算
$a = $b = 10;

比较运算符

比较两个数据,返回 bool 值

> 大于
>= 大于等于
< 小于
<= 小于等于
== 相等,值相等
!= 不相等
=== 全等,数据类型和数据值都相等
!== 全不相等
<?php$a = 123;
$b = '123';var_dump($a == $b);
// bool(true)var_dump($a === $b);
// bool(false)

逻辑运算符

返回 bool 值

&& 逻辑与 两边都为true
|| 逻辑或 一边为true
!  逻辑非 取反
<?php$a = 'tom';
$b = 'jacks';// 逻辑与
var_dump($a == 'tom' && $b == 'jack');
// bool(false)// 逻辑或
var_dump($a == 'tom' || $b == 'jack');
// bool(true)// 逻辑非
var_dump($b == 'jack');
// bool(false)
var_dump(!($b == 'jack'));
// bool(true)

逻辑与和逻辑非,又称为短路运算,如果第一个表达式满足条件,就不会判断第二个条件

一般把频率出现高(能够直接判断出结果)的放在第一位

连接运算符

PHP 中将多个字符串拼接在一起

  • . 将两个字符串连接到一起
  • .= 复合运算,两个字符连接起来,并赋值给左边变量
<?php$a = 'Hello';
$b = 'World';var_dump($a . $b);
// string(10) "HelloWorld"// 相当于 $a = $a . $b;
$a .= $b;
var_dump($a);
// string(10) "HelloWorld"

错误抑制符

@ 不显示报错内容

<?phpecho @(1/0);
// INF

通常在生产环境使用

三目运算符

有三个表达式参与运算,简单的分支结构

语法格式

表达式1 ? 表达式2 : 表达式3

如果表达式 1 为 ture, 执行表达式 2, 否则执行表达式 3

<?phpecho 1 > 10 ? '1大于10': '1小于10';
// 1小于10

复合三目运算符

表达式1 ? (表达式2 ? 表达式3 : 表达式4) : (表达式5 ? 表达式6 : 表达式7)

自操作运算符

  • ++ 原来的值 +1
  • -- 原来的值 -1
$a = 1;
$a++; // $a = $a + 1;

前置操作和后置操作

<?php$a = 1;// 独立操作
$a++;
var_dump($a);
// int(2)++$a;
var_dump($a);
// int(3)// 非独立操作
$b = $a++;
$c = ++$a;
var_dump($b); // int(3)
var_dump($c); // int(5)
var_dump($a); // int(5)

衍生符号,类似自操作

+= $a += $b; <==>  $a = $a + $b;
-=
*=
/=
%=

需要注意除法或取余,右边的操作数为 0 的情况

计算机码

计算机码:计算机实际存储数据的时候,采用的编码规则(二进制规则)

数值本身最左边第一位是符号位,正数 0,负数 1

原码、反码、补码

  • 原码 数据本身从十进制转换成二进制得到的结果

    • 正数:左边符号位为 0(正数的原码,反码和补码就是原码本身)
    • 负数:左边符号位为 1
  • 反码 针对负数,符号位不变,其他位取反
  • 补码 针对负数,反码+1

系统中存在两个 0

+0 0000 0000
-0 1000 0000 原码
取反 1111 1111
补码 0000 0000
+5 0000 0101(原码、反码、补码都是 )-5 原码 1000 0101反码 1111 1010 符号位不变,其他位取反补码 1111 1011 反码+1

位运算符

位运算:取出计算机中最小的单位(位 bit)进行运算

&   按位与    两位都为1,结果为1,否则为0
|   按位或    有一个为1,结果为1
~   按位非    如果为1,结果为0;如果为0,结果为1
^   按位异或  两位相同则为0,不同为1
<<  按位左移  所有位向左移动一位,右边补0,相当于乘以2
>>  按位右移  所有为向右移动一位,左边补符号位对应内容(正数补0,负数补1),相当于除以2

注意:

  • 系统进行任何位运算的时候使用的都是补码
  • 运算结束之后都必须转换成原码才是最终显示的数据

按位与

<?php$a = 5;
$b = -5;var_dump($a & $b);
// int(1)// 计算过程:
// 5 0000 0101 (正数 原码==反码==补码)
// -5 1000 0101(原码)
// -> 1111 1010(反码)
// -> 1111 1011(补码)// 5  0000 0101
// -5 1111 1011(补码)
// &  0000 0001 正数
// 判断符号位:0表示正数(原码),1表示负数(补码)

按位非运算

<?php$b = -5;var_dump(~$b);
// int(4)// 计算过程:
// -5 1000 0101(原码)
// -> 1111 1010(反码)
// -> 1111 1011(补码)// -5 1111 1011(补码)
// ~  0000 0100 正数
//  4

按位右移

<?php$b = -5;var_dump($b>>2);
// int(-2)// 计算过程:
// -5 1000 0101(原码)
// -> 1111 1010(反码)
// -> 1111 1011(补码)// -5   1111 1011(补码)
// >>2  --11 1110
//      1111 1110 运算结果,左边补符号位(符号位为0,是负数补码)
//  -1  1111 1101   反码
//      1000 0010   原码
//      -2

运算符的优先级(由高到低)

结合方向 运算符 附加信息
不适用 clone new clone 和 new
** 算术运算符
不适用 + - ++ – ~ (int) (float) (string) (array) (object) (bool) @ 算术 (一元 + 和 -), 递增/递减, 按位, 类型转换 和 错误控制
instanceof 类型
不适用 ! 逻辑运算符
* / % 算术运算符
+ - . 算数 (二元 + 和 -), array 和 string (. PHP 8.0.0 前可用)
<< >> 位运算符
. string (PHP 8.0.0 起可用)
< <= > >= 比较运算符
== != === !== <> <=> 比较运算符
& 位运算符 和 引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
?? null 合并运算符
无关联 ? : 三元运算符 (PHP 8.0.0 之前左联)
= += -= *= **= /= .= %= &= |= ^= <<= >>= ??= 赋值运算符
不适用 yield from yield from
不适用 yield yield
不适用 print print
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符

文档:https://www.php.net/manual/zh/language.operators.precedence.php

PHP 零基础入门笔记(5):PHP 运算符 operator相关推荐

  1. 11岁过python1级_11岁表弟写的Python零基础入门笔记!

    一.Python输入与输出输出:使用print()函数. print()函数的基本语法格式如下:print(输出内容). 输出内容可以是数字和字符串(字符串需要用引号括起来),也可以是包含运算符的表达 ...

  2. 【Python3零基础入门笔记】05 Python时间处理——time库的使用

    time库的使用: time库基本情况 时间获取 时间格式化 程序计时 文本进度条实例 time库基本情况 Time库是python中处理时间的标准库 计算机时间表达 提供获取系统时间并格式化输出功能 ...

  3. PHP 零基础入门笔记(6):PHP 流程控制

    PHP 流程控制 代码执行的方向 控制分类 顺序结构 代码从上往下,顺序执行 分支结构 根据条件执行某一段代码 循环结构 指定代码块重复执行 顺序结构 最基本的结构,所有代码默认都是从上往下依次执行 ...

  4. python 零基础入门笔记

    作用 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,在许多领域都有应用,包括Web编程,脚本编写,科学计算和人工智能等. 特点 Python 是一种: 解释型语言: 开发过程中没 ...

  5. Unity C#零基础入门笔记(一)Paws3D笔记

    计算机语言: 计算机语言按发展分为三种: 机器语言 汇编语言 高级语言 机器语言就是机器码,是能够被计算机直接理解的语言.更通俗地讲就是010101这样的二进制指令.和硬件密切相关,编写苦难. 两个主 ...

  6. PHP 零基础入门笔记(11):字符串 String

    字符串 String 字符串类型 单引号字符串 双引号字符串 nowdoc 字符串 heredoc 字符串 示例 <?php// 1.单引号字符串 $str1 = 'hello world';v ...

  7. JavaScript零基础入门 3:javascript运算符有哪些

  8. JavaScript零基础入门--笔记动力节点最新老杜(九-完结)全套笔记精髓

    JSON         1.什么是JSON,有什么用?                     JavaScript Object Notation(JavaScript对象标记),简称JSON.( ...

  9. PHP 零基础入门笔记(3):PHP 变量和常量

    PHP 变量和常量 PHP 基本语法 PHP 是一种运行在服务器端的脚本语言,可以嵌入到 HTML 中 1.PHP 代码标记 ASP 标记(asp_tags,已弃用) <% php代码 %> ...

最新文章

  1. Linux系统与我之间的故事
  2. photoshop修复面部的皱纹
  3. GOF设计模式之1:单例设计模式
  4. Shamir密钥分享算法 python实现
  5. 动态规划之子序列问题
  6. 【毕业答辩】怎样做好毕业答辩?纯干货
  7. 纯干货:手把手教你用Python做数据可视化(附代码)
  8. 如何关掉 pyg解密小组声明窗口 (飘云阁番茄插件)
  9. 【光学】(杨氏双缝+劈尖)干涉+(单缝+多缝+圆孔+矩孔)衍射仿真matlab源码含GUI
  10. 测试计划工作的目的是什么?
  11. 稀奇古怪的代码处理方式
  12. 反问题 matlab算例,几类反问题的复变量重构核粒子法研究
  13. 用户画像,原来是这么用的!看一个生活中的案例
  14. 商务办公软件应用与实践【1】
  15. 基于G-sensor的计步解决方案
  16. PS学习(一)-改变logo颜色
  17. 猫狗二分类实战(PyTorch)
  18. windows使用ssh连接远程服务器
  19. 计算机操作系统期末复习大纲
  20. SPPID开发-开发简介及VB代码转C#

热门文章

  1. 宝莱坞机器人之恋 电影 全部歌曲 铁甲情痴终结者 全部插曲 在线试听 下载
  2. 文献阅读之无人机防御性驾驶-提前感知快速飞行的轨迹规划
  3. 原来你就是传说中的安(hei)全(ke)人员【红队技巧分享】
  4. Openflow流表学习
  5. java定义日期格式_Java时间格式定义详解
  6. ROM制作教程 如何创建一个刷机包
  7. druid监控页面 关闭_阿里Druid监控页面分析
  8. 长期维护更新,前端面试题整理
  9. 机器学习One-Hot编码
  10. 坚果云和亿方云哪个更适合办公?