当前位置: 首页 > news >正文

07 Php学习:运算符

PHP 算术运算符

在这里插入图片描述
在 PHP 中,算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法、取余数,负数运算、取反和并置运算。以下是这些运算符的详细解释和示例:

  1. 加法运算符 +:用于将两个数值相加。
$a = 5;
$b = 3;
$result = $a + $b; // 5 + 3
echo $result; // 输出 8
  1. 减法运算符 -:用于从第一个数值中减去第二个数值。
$a = 10;
$b = 4;
$result = $a - $b; // 10 - 4
echo $result; // 输出 6
  1. 乘法运算符 *:用于将两个数值相乘。
$a = 6;
$b = 2;
$result = $a * $b; // 6 * 2
echo $result; // 输出 12
  1. 除法运算符 /:用于将第一个数值除以第二个数值。
$a = 20;
$b = 5;
$result = $a / $b; // 20 / 5
echo $result; // 输出 4
  1. 取余数运算符 %:用于取得两个数相除后的余数。
$a = 17;
$b = 5;
$result = $a % $b; // 17 除以 5 的余数
echo $result; // 输出 2
  1. 负数运算符 -:用于将数值变为负数。
$a = 8;
$negative_a = -$a; // 将 $a 变为负数
echo $negative_a; // 输出 -8
  1. 取反运算符 ~:用于按位取反,将二进制数每一位取反。
$a = 5; // 二进制表示为 00000101
$neg_a = ~$a; // 二进制取反得到 11111010,即 -6
echo $neg_a; // 输出 -6
  1. 字符串并置运算符 .:用于将两个字符串连接成一个新的字符串。
$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 赋值运算符及其详细解释和示例:

  1. 等号赋值运算符 =:将右侧表达式的值赋给左侧的变量。
$a = 5; // 将数字 5 赋给变量 $a
  1. 加法赋值运算符 +=:将右侧表达式的值加到左侧变量的值上,并将结果赋给左侧变量。
$b = 10;
$b += 3; // 相当于 $b = $b + 3;
echo $b; // 输出 13
  1. 减法赋值运算符 -=:从左侧变量的值中减去右侧表达式的值,并将结果赋给左侧变量。
$c = 8;
$c -= 2; // 相当于 $c = $c - 2;
echo $c; // 输出 6
  1. 乘法赋值运算符 *=:将左侧变量的值乘以右侧表达式的值,并将结果赋给左侧变量。
$d = 4;
$d *= 5; // 相当于 $d = $d * 5;
echo $d; // 输出 20
  1. 除法赋值运算符 /=:将左侧变量的值除以右侧表达式的值,并将结果赋给左侧变量。
$e = 20;
$e /= 4; // 相当于 $e = $e / 4;
echo $e; // 输出 5
  1. 取模赋值运算符 %=:将左侧变量的值取模右侧表达式的值,并将结果赋给左侧变量。
$f = 26;
$f %= 5; // 相当于 $f = $f % 5;
echo $f; // 输出 1
  1. 并置赋值运算符 .=:将右侧表达式的值连接到左侧变量的值末尾,并将结果赋给左侧变量。
$g = "Hello, ";
$g .= "World!"; // 相当于 $g = $g . "World!";
echo $g; // 输出 Hello, World!

以上是常见的 PHP 赋值运算符及其示例。这些赋值运算符可以帮助程序员在对变量进行操作时简化代码,并更加高效地进行赋值与运算。

PHP 递增/递减运算符

在这里插入图片描述
在 PHP 中,递增(Increment)和递减(Decrement)运算符用于增加或减少变量的值。这些运算符对于循环或值的快速修改非常有用。以下是递增和递减运算符的详细解释和示例:

递增运算符

  1. 前缀递增运算符 ++$var:先将 $var 的值加 1,然后返回 $var 的值。
$a = 5;
echo ++$a; // 输出 6,$a 先增加 1,然后返回 $a 的值
  1. 后缀递增运算符 $var++:先返回 $var 的值,然后将 $var 的值加 1。
$b = 5;
echo $b++; // 输出 5,$b 的原始值被返回,然后 $b 增加 1
echo $b; // 输出 6,显示 $b 更新后的值

递减运算符

  1. 前缀递减运算符 --$var:先将 $var 的值减 1,然后返回 $var 的值。
$c = 5;
echo --$c; // 输出 4,$c 先减少 1,然后返回 $c 的值
  1. 后缀递减运算符 $var--:先返回 $var 的值,然后将 $var 的值减 1。
$d = 5;
echo $d--; // 输出 5,$d 的原始值被返回,然后 $d 减少 1
echo $d; // 输出 4,显示 $d 更新后的值

递增和递减运算符是在编程中经常使用的,尤其在循环和迭代中。它们提供了一种快速简便的方法来修改变量的值。重要的是要记住前缀和后缀运算符的区别,因为它们在返回值时的行为是不同的。

PHP 比较运算符

在这里插入图片描述
在 PHP 中,比较运算符用于比较两个值的大小,并根据比较结果返回布尔值(true 或 false)。以下是常见的比较运算符及其详细解释和示例:

  1. 相等运算符 ==:检查两个值是否相等,不考虑数据类型。
$a = 5;
$b = "5";
var_dump($a == $b); // 输出 bool(true)
  1. 全等运算符 ===:检查两个值是否相等且数据类型必须相同。
$x = 10;
$y = "10";
var_dump($x === $y); // 输出 bool(false)
  1. 不等运算符 != or <>:检查两个值是否不相等,不考虑数据类型。
$c = 8;
$d = 12;
var_dump($c != $d); // 输出 bool(true)
  1. 不全等运算符 !==:检查两个值是否既不相等也数据类型不同。
$e = 15;
$f = "15";
var_dump($e !== $f); // 输出 bool(true)
  1. 大于运算符 >:检查左侧值是否大于右侧值。
$g = 20;
$h = 15;
var_dump($g > $h); // 输出 bool(true)
  1. 小于运算符 <:检查左侧值是否小于右侧值。
$j = 25;
$k = 30;
var_dump($j < $k); // 输出 bool(true)
  1. 大于等于运算符 >=:检查左侧值是否大于或等于右侧值。
$m = 40;
$n = 40;
var_dump($m >= $n); // 输出 bool(true)
  1. 小于等于运算符 <=:检查左侧值是否小于或等于右侧值。
$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 中&#xff0c;算术运算符用于执行基本的数学运算&#xff0c;包括加法、减法、乘法、除法、取余数&#xff0c;负数运算、取反和并置运算。以下是这些运算符的详细解释和示例&#xff1a; 加法运算符 &#xff1a;用于将两个数值相加。 $a 5; $b 3;…...

做了多年前端,有没有想在python,go,nodejs,.net,java,c++中学一门后端,推荐

作为一名经验丰富的前端开发者&#xff0c;选择学习后端技术是一个重要的职业发展决策。Python、Go、Node.js、.NET、Java和C都是强大的后端开发语言&#xff0c;每门语言都有其特定的优势和应用场景。以下是对这些技术的分析&#xff0c;以帮助你做出选择&#xff1a; 目录 …...

JR-SMD201-P便携式网络解码器

详细介绍&#xff1a; JR-SMD201-P便携式网络解码器采用1/2U设计&#xff0c;支持AVS/H.265/H.264/MPEG2解码&#xff0c;支持IP输入&#xff0c;支持1080P/1080I/720P/576I/480I多种分辨率&#xff0c;支持DRA/AC3/EAC3/AAC/MPEG等音频。 产品特点 支持输入方式IP 接口丰富&a…...

线程池阻塞队列的选择

一、背景 想起前两年被问到阻塞队列怎么选&#xff0c;有界是必然的&#xff0c; ArrayBlockingQueue、LinkedBlockingQueue怎么选呢。 二、打开源码看看 ArrayBlockingQueue arrayBlockingQueue new ArrayBlockingQueue(3);LinkedBlockingQueue linkedBlockingQueue new Lin…...

linux内核驱动-在内核代码里添加设备结点

linux中&#xff0c;一切皆文件 我们在用户层用一些系统函数&#xff08;如&#xff1a;fopen等等&#xff09;时&#xff0c;会进入内核&#xff0c;内核会在字符注册了的设备号链表中查找。如果找到就运行我们写的设备文件的&#xff08;驱动&#xff09;函数 我们在前面已经…...

【算法优选】 动态规划之简单多状态dp问题——贰

文章目录 &#x1f38b;前言&#x1f334;[买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/)&#x1f6a9;题目描述&#x1f6a9;算法思路&#xff1a;&#x1f388;状态表示&#xff1a;&#x1f388;…...

【算法刷题 | 二叉树 06】4.10( 路径总和、路径总和 || )

文章目录 13.路径总和13.1问题13.2解法一&#xff1a;递归13.2.1递归思路&#xff08;1&#xff09;确定递归函数参数以及返回值&#xff08;2&#xff09;确定终止条件&#xff08;3&#xff09;确定递归逻辑 13.2.2代码实现 14.路径总和 ||14.1问题14.2解法一&#xff1a;递归…...

代码学习记录37----动态规划

随想录日记part37 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.04.06 主要内容&#xff1a;今天开始要学习动态规划的相关知识了&#xff0c;今天的内容主要涉及四个方面&#xff1a; 完全背包&#xff1b;零钱兑换 II &#xff1b;组合总和 Ⅳ 和单词拆分 …...

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 题目来源我的题解方法一 记忆化搜索&#xff08;自顶向下&#xff09;方法二 动态规划&#xff08;自底向上&#xff09; 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2312 我的题解 方法一 记忆化搜索&#xff08;自顶向下&#xff09; 用 f(x,y)表示当木…...

vue快速入门(七)内联语句

注释很详细&#xff0c;直接上代码 上一篇 新增内容 button点击事件绑定内联语句写法与要求 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wid…...

Docker实战教程 第2章 Docker基础

3-1 Docker介绍 什么是Docker 虚拟化&#xff0c;容器 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 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 测试报告内容

在软件测试过程中&#xff0c;生成清晰、易读的测试报告对于团队交流、问题追踪和项目进度评估至关重要。Pytest 是一个功能强大的 Python 测试框架&#xff0c;它不仅支持丰富的断言和测试用例组织方式&#xff0c;还提供了灵活的插件系统和钩子函数&#xff0c;可以帮助我们定…...

《高通量测序技术》分享,生物信息学生信流程的性能验证,以肿瘤NGS基因检测为例。

这是这本书&#xff0c;第四章第五节的内容&#xff0c;这一部分是以NGS检测肿瘤基因突变为例&#xff0c;描述了其原理和大概流程&#xff0c;这和以前我分享的病原宏基因组高通量测序性能确认方案可以互相补充&#xff0c;大家可以都看一下&#xff0c;但是想要真正的弄懂&am…...

Django+Celery框架自动化定时任务开发

本章介绍使用DjCelery即DjangoCelery框架开发定时任务功能&#xff0c;在Autotestplat平台上实现单一接口自动化测试脚本、业务场景接口自动化测试脚本、App自动化测试脚本、Web自动化测试脚本等任务的定时执行、调度、管理等&#xff0c;从而取代Jenkins上的定时执行脚本和发送…...

解决element-plus table组件 fixed=“right“(left)浮动后横向滚动文字穿透的问题

BUG 版本&#xff1a;element-plus 2.6.1 浏览器&#xff1a;360极速浏览器22.1 (Chromium内核) 组件&#xff1a;el-table组件 问题&#xff1a;在头部/尾部浮动加上斑马条纹后&#xff0c;横向滚动存在文字穿透的问题。具体如图&#xff1a; 白色背景行的文字&#xff0c…...

【opencv】示例-distrans.cpp 距离变换

stuff.jpg #include <opencv2/core/utility.hpp> // 包含OpenCV中的核心功能支持库 #include "opencv2/imgproc.hpp" // 包含OpenCV中的图像处理库 #include "opencv2/imgcodecs.hpp" // 包含OpenCV中的图像编解码库 #include "open…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...