07 Php学习:运算符
PHP 算术运算符

在 PHP 中,算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法、取余数,负数运算、取反和并置运算。以下是这些运算符的详细解释和示例:
- 加法运算符
+:用于将两个数值相加。
$a = 5;
$b = 3;
$result = $a + $b; // 5 + 3
echo $result; // 输出 8
- 减法运算符
-:用于从第一个数值中减去第二个数值。
$a = 10;
$b = 4;
$result = $a - $b; // 10 - 4
echo $result; // 输出 6
- 乘法运算符
*:用于将两个数值相乘。
$a = 6;
$b = 2;
$result = $a * $b; // 6 * 2
echo $result; // 输出 12
- 除法运算符
/:用于将第一个数值除以第二个数值。
$a = 20;
$b = 5;
$result = $a / $b; // 20 / 5
echo $result; // 输出 4
- 取余数运算符
%:用于取得两个数相除后的余数。
$a = 17;
$b = 5;
$result = $a % $b; // 17 除以 5 的余数
echo $result; // 输出 2
- 负数运算符
-:用于将数值变为负数。
$a = 8;
$negative_a = -$a; // 将 $a 变为负数
echo $negative_a; // 输出 -8
- 取反运算符
~:用于按位取反,将二进制数每一位取反。
$a = 5; // 二进制表示为 00000101
$neg_a = ~$a; // 二进制取反得到 11111010,即 -6
echo $neg_a; // 输出 -6
- 字符串并置运算符
.:用于将两个字符串连接成一个新的字符串。
$str1 = "Hello, ";
$str2 = "World!";
$combined_str = $str1 . $str2; // 连接两个字符串
echo $combined_str; // 输出 Hello, World!
上述是 PHP 中常见的算术运算符和操作符,可以进行基本的数学运算、按位运算、字符串拼接等操作。这些运算符能够帮助我们进行各种数值处理和数据操作。
intdiv() 除法取整
intdiv() 是 PHP 7 新增的用于整数除法的函数。它会返回两个数相除的结果,且结果会被强制转换为整数类型。以下是关于 intdiv() 函数的详细信息:
语法:intdiv(int $dividend, int $divisor): int
$dividend:被除数。$divisor:除数。
返回值:结果被强制转换为整数类型。
示例:
$result = intdiv(10, 3); // 整数除法 10 / 3,结果为 3.333,强制转换为整数,结果为 3
var_dump($result); // 输出 int(3)
在上面的示例中,intdiv(10, 3) 进行整数除法运算,结果为 3.333,但由于使用了 intdiv() 函数,结果被强制转换为整数类型 3。
intdiv() 函数特别适合处理需要得到整数结果的除法运算,避免了由于常规除法操作可能产生的小数部分。这在一些需要得到整数结果的情况下非常有用,如计算页数、分配物品等场景。
var_dump() 打印变量类型和值
var_dump() 是 PHP 中用于打印变量的类型和值的函数。它可以用于调试和了解变量的结构和内容。以下是关于 var_dump() 函数的详细信息:
语法:void var_dump(mixed $expression, mixed ...$expressions): void
$expression:要检查的变量或表达式。$expressions(可选):可同时传递多个要检查的变量或表达式。
功能:
- 打印变量的类型和值。
- 如果变量是数组或对象,
var_dump()还会显示它们的结构和成员变量。
示例:
$name = "John";
$age = 30;
$height = 175.5;
$friends = array("Alice", "Bob", "Charlie");var_dump($name); // 打印字符串类型和值
var_dump($age); // 打印整数类型和值
var_dump($height); // 打印浮点数类型和值
var_dump($friends); // 打印数组类型和值,以及数组的结构和元素
输出示例:
string(4) "John"
int(30)
float(175.5)
array(3) {[0]=>string(5) "Alice"[1]=>string(3) "Bob"[2]=>string(7) "Charlie"
}
var_dump() 函数是调试 PHP 代码时非常有用的工具,它能够提供关于变量类型、值以及数组或对象结构的详细信息,帮助开发者快速定位问题并进行调试。
PHP 赋值运算符

PHP 中有多种赋值运算符,它们用于给变量赋值。以下是常见的 PHP 赋值运算符及其详细解释和示例:
- 等号赋值运算符
=:将右侧表达式的值赋给左侧的变量。
$a = 5; // 将数字 5 赋给变量 $a
- 加法赋值运算符
+=:将右侧表达式的值加到左侧变量的值上,并将结果赋给左侧变量。
$b = 10;
$b += 3; // 相当于 $b = $b + 3;
echo $b; // 输出 13
- 减法赋值运算符
-=:从左侧变量的值中减去右侧表达式的值,并将结果赋给左侧变量。
$c = 8;
$c -= 2; // 相当于 $c = $c - 2;
echo $c; // 输出 6
- 乘法赋值运算符
*=:将左侧变量的值乘以右侧表达式的值,并将结果赋给左侧变量。
$d = 4;
$d *= 5; // 相当于 $d = $d * 5;
echo $d; // 输出 20
- 除法赋值运算符
/=:将左侧变量的值除以右侧表达式的值,并将结果赋给左侧变量。
$e = 20;
$e /= 4; // 相当于 $e = $e / 4;
echo $e; // 输出 5
- 取模赋值运算符
%=:将左侧变量的值取模右侧表达式的值,并将结果赋给左侧变量。
$f = 26;
$f %= 5; // 相当于 $f = $f % 5;
echo $f; // 输出 1
- 并置赋值运算符
.=:将右侧表达式的值连接到左侧变量的值末尾,并将结果赋给左侧变量。
$g = "Hello, ";
$g .= "World!"; // 相当于 $g = $g . "World!";
echo $g; // 输出 Hello, World!
以上是常见的 PHP 赋值运算符及其示例。这些赋值运算符可以帮助程序员在对变量进行操作时简化代码,并更加高效地进行赋值与运算。
PHP 递增/递减运算符

在 PHP 中,递增(Increment)和递减(Decrement)运算符用于增加或减少变量的值。这些运算符对于循环或值的快速修改非常有用。以下是递增和递减运算符的详细解释和示例:
递增运算符
- 前缀递增运算符
++$var:先将$var的值加 1,然后返回$var的值。
$a = 5;
echo ++$a; // 输出 6,$a 先增加 1,然后返回 $a 的值
- 后缀递增运算符
$var++:先返回$var的值,然后将$var的值加 1。
$b = 5;
echo $b++; // 输出 5,$b 的原始值被返回,然后 $b 增加 1
echo $b; // 输出 6,显示 $b 更新后的值
递减运算符
- 前缀递减运算符
--$var:先将$var的值减 1,然后返回$var的值。
$c = 5;
echo --$c; // 输出 4,$c 先减少 1,然后返回 $c 的值
- 后缀递减运算符
$var--:先返回$var的值,然后将$var的值减 1。
$d = 5;
echo $d--; // 输出 5,$d 的原始值被返回,然后 $d 减少 1
echo $d; // 输出 4,显示 $d 更新后的值
递增和递减运算符是在编程中经常使用的,尤其在循环和迭代中。它们提供了一种快速简便的方法来修改变量的值。重要的是要记住前缀和后缀运算符的区别,因为它们在返回值时的行为是不同的。
PHP 比较运算符

在 PHP 中,比较运算符用于比较两个值的大小,并根据比较结果返回布尔值(true 或 false)。以下是常见的比较运算符及其详细解释和示例:
- 相等运算符
==:检查两个值是否相等,不考虑数据类型。
$a = 5;
$b = "5";
var_dump($a == $b); // 输出 bool(true)
- 全等运算符
===:检查两个值是否相等且数据类型必须相同。
$x = 10;
$y = "10";
var_dump($x === $y); // 输出 bool(false)
- 不等运算符
!=or<>:检查两个值是否不相等,不考虑数据类型。
$c = 8;
$d = 12;
var_dump($c != $d); // 输出 bool(true)
- 不全等运算符
!==:检查两个值是否既不相等也数据类型不同。
$e = 15;
$f = "15";
var_dump($e !== $f); // 输出 bool(true)
- 大于运算符
>:检查左侧值是否大于右侧值。
$g = 20;
$h = 15;
var_dump($g > $h); // 输出 bool(true)
- 小于运算符
<:检查左侧值是否小于右侧值。
$j = 25;
$k = 30;
var_dump($j < $k); // 输出 bool(true)
- 大于等于运算符
>=:检查左侧值是否大于或等于右侧值。
$m = 40;
$n = 40;
var_dump($m >= $n); // 输出 bool(true)
- 小于等于运算符
<=:检查左侧值是否小于或等于右侧值。
$p = 50;
$q = 60;
var_dump($p <= $q); // 输出 bool(true)
比较运算符在控制流程、条件语句和循环等方面非常有用,可以帮助程序员进行值的比较和作出相应的决策。通过合理使用比较运算符,可以更好地控制代码的逻辑和流程。
PHP 逻辑运算符

PHP 数组运算符

三元运算符
在 PHP 中,三元运算符(也称为条件运算符)是一种简洁的条件语句,用于根据条件的真假返回不同的值。它的语法如下:
$variable = (condition) ? value_if_true : value_if_false;
- 如果
condition为真,则会返回value_if_true的值。 - 如果
condition为假,则会返回value_if_false的值。
以下是一个简单的示例:
$age = 20;
$is_adult = ($age >= 18) ? "Yes" : "No";
echo $is_adult; // 输出 "Yes"
在这个示例中,如果年龄大于等于 18,则 $is_adult 的值为 “Yes”,否则为 “No”。
三元运算符通常用于简单的条件分支,使代码更为简洁和易读。但过度使用三元运算符有时候可能会导致可读性下降,因此需要合理地使用。
组合比较符
PHP 7 中引入了一种新的运算符,称为组合比较符(Combined Comparison Operator)或太空船操作符(Spaceship Operator),由 <=> 组成。这个运算符用于进行值的比较,返回一个整数来表示两个值的关系。下面是组合比较符的使用方式和示例:
$value1 <=> $value2
- 如果
$value1小于$value2,则返回-1。 - 如果
$value1等于$value2,则返回0。 - 如果
$value1大于$value2,则返回1。
示例:
echo 3 <=> 5; // 输出 -1,因为 3 小于 5
echo 5 <=> 5; // 输出 0,因为 5 等于 5
echo 8 <=> 5; // 输出 1,因为 8 大于 5
组合比较符常用于对数组进行排序,特别是在使用 usort() 或 uasort() 函数时,可以更简洁、高效地指定自定义排序规则。通过使用组合比较符,可以减少编写自定义排序函数的复杂性,提高代码可读性和维护性。
运算符优先级

关注我,不迷路,共学习,同进步
关注我,不迷路,共学习,同进步

相关文章:
07 Php学习:运算符
PHP 算术运算符 在 PHP 中,算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法、取余数,负数运算、取反和并置运算。以下是这些运算符的详细解释和示例: 加法运算符 :用于将两个数值相加。 $a 5; $b 3;…...
做了多年前端,有没有想在python,go,nodejs,.net,java,c++中学一门后端,推荐
作为一名经验丰富的前端开发者,选择学习后端技术是一个重要的职业发展决策。Python、Go、Node.js、.NET、Java和C都是强大的后端开发语言,每门语言都有其特定的优势和应用场景。以下是对这些技术的分析,以帮助你做出选择: 目录 …...
JR-SMD201-P便携式网络解码器
详细介绍: JR-SMD201-P便携式网络解码器采用1/2U设计,支持AVS/H.265/H.264/MPEG2解码,支持IP输入,支持1080P/1080I/720P/576I/480I多种分辨率,支持DRA/AC3/EAC3/AAC/MPEG等音频。 产品特点 支持输入方式IP 接口丰富&a…...
线程池阻塞队列的选择
一、背景 想起前两年被问到阻塞队列怎么选,有界是必然的, ArrayBlockingQueue、LinkedBlockingQueue怎么选呢。 二、打开源码看看 ArrayBlockingQueue arrayBlockingQueue new ArrayBlockingQueue(3);LinkedBlockingQueue linkedBlockingQueue new Lin…...
linux内核驱动-在内核代码里添加设备结点
linux中,一切皆文件 我们在用户层用一些系统函数(如:fopen等等)时,会进入内核,内核会在字符注册了的设备号链表中查找。如果找到就运行我们写的设备文件的(驱动)函数 我们在前面已经…...
【算法优选】 动态规划之简单多状态dp问题——贰
文章目录 🎋前言🌴[买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/)🚩题目描述🚩算法思路:🎈状态表示:🎈…...
【算法刷题 | 二叉树 06】4.10( 路径总和、路径总和 || )
文章目录 13.路径总和13.1问题13.2解法一:递归13.2.1递归思路(1)确定递归函数参数以及返回值(2)确定终止条件(3)确定递归逻辑 13.2.2代码实现 14.路径总和 ||14.1问题14.2解法一:递归…...
代码学习记录37----动态规划
随想录日记part37 t i m e : time: time: 2024.04.06 主要内容:今天开始要学习动态规划的相关知识了,今天的内容主要涉及四个方面: 完全背包;零钱兑换 II ;组合总和 Ⅳ 和单词拆分 …...
Spring Boot:Web开发之三大组件的整合
Spring Boot 前言Spring Boot 整合 ServletSpring Boot 整合 FilterSpring Boot 整合 Listener前言 在 Web 开发中,Servlet 、Filter 和 Listener 是 Java Web 应用中的三大组件。Servlet 是 Java 代码,通过 Java 的 API 动态的向客户端输出内容。Filter 是处于客户端与服务…...
2024.3.15力扣每日一题——卖木头块
2024.3.15 题目来源我的题解方法一 记忆化搜索(自顶向下)方法二 动态规划(自底向上) 题目来源 力扣每日一题;题序:2312 我的题解 方法一 记忆化搜索(自顶向下) 用 f(x,y)表示当木…...
vue快速入门(七)内联语句
注释很详细,直接上代码 上一篇 新增内容 button点击事件绑定内联语句写法与要求 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wid…...
Docker实战教程 第2章 Docker基础
3-1 Docker介绍 什么是Docker 虚拟化,容器 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上&…...
【S32K3 MCAL配置】-3.2-CANFD配置-发送“经典CAN/CANFD标准帧“和“经典CAN/CANFD扩展帧“(基于MCAL+FreeRTOS)
"><--返回「Autosar_MCAL高阶配置」专栏主页--> 目录 实现的架构:基于MCAL层 前期准备工作: 1 评估板S32K312EVB-Q172中CAN外设...
【airtest】自动化入门教程(四)Poco元素定位
目录 一、基础操作 1、通过属性名等方式 2、通过属性组合 3、子节点方式 4、子节点加属性组合方式 5、孙节点offspring 6、兄弟节点sibling 7、父节点parent 8、正则表达式 9、直到某个元素出现 10、直到某个元素消失 二、通过局部坐标定位 1、使用局部坐标系的cli…...
Go语言中如何处理goroutine和循环变量
对goroutine和循环变量处理不当可能是Go开发人员在编写并发应用程序时最常犯的错误之一。让我们看一个具体的例子,然后我们将定义发生此类错误的条件以及如何防止发生这类错误。 在下面的示例中,我们初始化一个切片,然后在作为新goroutine执行的闭包中访问这个元素: s := …...
Pytest教程:一文了解如何使用 pytest_runtest_makereport 修改 Pytest 测试报告内容
在软件测试过程中,生成清晰、易读的测试报告对于团队交流、问题追踪和项目进度评估至关重要。Pytest 是一个功能强大的 Python 测试框架,它不仅支持丰富的断言和测试用例组织方式,还提供了灵活的插件系统和钩子函数,可以帮助我们定…...
《高通量测序技术》分享,生物信息学生信流程的性能验证,以肿瘤NGS基因检测为例。
这是这本书,第四章第五节的内容,这一部分是以NGS检测肿瘤基因突变为例,描述了其原理和大概流程,这和以前我分享的病原宏基因组高通量测序性能确认方案可以互相补充,大家可以都看一下,但是想要真正的弄懂&am…...
Django+Celery框架自动化定时任务开发
本章介绍使用DjCelery即DjangoCelery框架开发定时任务功能,在Autotestplat平台上实现单一接口自动化测试脚本、业务场景接口自动化测试脚本、App自动化测试脚本、Web自动化测试脚本等任务的定时执行、调度、管理等,从而取代Jenkins上的定时执行脚本和发送…...
解决element-plus table组件 fixed=“right“(left)浮动后横向滚动文字穿透的问题
BUG 版本:element-plus 2.6.1 浏览器:360极速浏览器22.1 (Chromium内核) 组件:el-table组件 问题:在头部/尾部浮动加上斑马条纹后,横向滚动存在文字穿透的问题。具体如图: 白色背景行的文字,…...
【opencv】示例-distrans.cpp 距离变换
stuff.jpg #include <opencv2/core/utility.hpp> // 包含OpenCV中的核心功能支持库 #include "opencv2/imgproc.hpp" // 包含OpenCV中的图像处理库 #include "opencv2/imgcodecs.hpp" // 包含OpenCV中的图像编解码库 #include "open…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
