PHP 字符串连接和算术运算

2023-12-19

刚开始学习PHP不久,遇到了这样的问题:

<?php

$a = 1;
$b = 2;

echo "$a * $b  = " . $a * $b;
echo "<br />";

echo "$a / $b  = " . $a / $b;
echo "<br />";

echo "$a + $b  = " . $a + $b;
echo "<br />";

echo "$a - $b  = " . $a - $b;
echo "<br />";

我得到以下输出:

1 * 2 = 2
1 / 2 = 0.5
3
-1

输出中的最后两行不是我所期望的。

为什么是这样?这些表达式是如何评估的?我正在努力更好地理解这门语言。


发生这种情况是因为串联运算符有一个更高的优先级 http://php.net/manual/en/language.operators.precedence.php与加法或减法运算符相比,但乘法和除法的优先级高于串联。

所以,你真正执行的是:

echo ("$a + $b  = " . $a) + $b;
echo ("$a - $b  = " . $a) - $b;

在第一种情况下,情况会变成这样:

"1 + 2 = 1" + $b

PHP 尝试转换哪个"1 + 2 = 1"变成一个数字(因为类型杂耍 http://php.net/manual/en/language.types.type-juggling.php) 得到 1,将表达式变为:

1 + 2

这就是为什么你得到 3。相同的逻辑可以应用于减法条件。

相反,如果在计算结果两边加上括号,您将得到所需的输出。

echo "$a + $b  = " . ($a + $b);
echo "$a - $b  = " . ($a - $b);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 字符串连接和算术运算 的相关文章

  • SQLSTATE[HY000] [2002] 连接尝试失败,因为连接方在一段时间后没有正确响应,

    我尝试连接 2 个数据库Laravel 5 6项目 但我遇到这样的错误 SQLSTATE HY000 2002 连接尝试失败 因为连接方在一段时间后没有正确响应 或者由于连接的主机未能响应而建立的连接失败 SQL 从中选择 mt merch
  • AngularJS + Laravel 5 身份验证

    在使用 AngularJS 构建 SPA 时 我想在 AngularJS 网站中实现用户身份验证 但是 我不知道从哪里开始以及最佳实践是什么 基本上我有一个确定可以担任一个或多个角色 我寻找了一些例子 这样我就可以对如何正确处理这个问题有一
  • 将日期格式(在数据库或输出中)更改为 dd/mm/yyyy - PHP MySQL

    MySQL 将日期存储在我的数据库中 默认情况下 为 YYYY MM DD 我的日期的字段类型是 DATE 我不需要任何时间存储 有没有一种简单的方法可以默认更改它到 DD MM YYYY 我在两个不同的表中调用不同的日期 并且在我的任何代
  • 图片无法直接上传到相册

    我正在开发上传图片文件的应用程序 但图片不能直接上传到相册 上传之前始终必须经过批准 如何解决这个问题 问题 您想将这些照片添加到您的相册吗 下面的照片是从另一个应用程序上传的 您需要批准它们 你需要user photos允许直接上传到相册
  • PDOException SQLSTATE[HY000] [2002] 我的本地计算机上的连接超时

    最近我从服务器导入了代码 但本地代码无法连接到远程 mysql 数据库 所以我有两个问题 我可以访问我的远程数据库吗 如果是 为什么我的代码不起作用 如果没有 有没有办法绕过这个问题 我不想复制在本地计算机上运行的 mysql 数据库 我的
  • 如何使用 PHP 创建动态页面标题

    大家好 我想知道是否有人可以帮助解决这个 PHP 问题 是否可以使用 H2 标记中的文本并使用它来动态填充页面标题 我还希望能够使用相同的技术将 H2 文本添加到元描述中 有人可以帮忙吗 如果您的 h2 文本是动态创建的 那么网页的其他部分
  • 在 WooCommerce 订单和电子邮件中添加并显示自定义购物车项目数据

    我有一个名为彩票的自定义 woocommerce 产品类型 我需要在其上添加一个自定义选择字段 因为它不是可变产品 所以我添加了一个 一切工作正常 我在购物车和结帐中也获得了价值 但我无法在管理订单或订单邮件 客户和管理员 中获得价值 这是
  • 准备好的声明不返回任何内容

    我知道这个特定的查询是有效的 因为我用未经准备的过程方法测试了它 这里是 name introduction mysqli new mysqli localhost user pass db or die There was a probl
  • 使用 with 的热切加载模型,但给它起了另一个名字 - Laravel 5.2

    是否可以使用 with 方法来使用预加载 但给它另一个名称 就像是 gt with documents as product documents documents as categories 我有一个可以是产品或类别的文档表 急切加载可以
  • 是否可以使用 PHP 检测用户来自哪个操作系统? (Mac 或 Windows)

    比方说 我想回应 你正在使用 Windows 或 您正在使用 Macintosh 具体取决于用户的操作系统 这可能吗 通过分析 SERVER HTTP USER AGENT 可以说出什么system and browser 用户是claim
  • MPDF 未定义索引错误

    我正在使用 MPDF 库将 HTML 转换为 PDF 这是我的代码 HTML HTML CONTENT GOES HERE HTML STRING MPDF gt WriteHTML html Converting MPDF gt Outp
  • 如何设置外键id的id #sf2 #doctrine2

    我正在尝试手动为对象设置外键 id 但没有找到如何执行此操作 class Item ORM ManyToOne targetEntity MyBundle Entity ItemType inversedBy itemTypes ORM J
  • PHP 是否有与 Java 的 RequestDispatcher.forward 等效的功能?

    在 Java 中我可以编写一个非常基本的 JSPindex jsp像这样 这样做的效果是用户请求index jsp 或者只是包含目录 假设index jsp是目录的默认文档 将会看到home action没有浏览器重定向 即 forward
  • 使用 shell_exec Powershell 输出到 PHP 变量

    我有一个 powershell 脚本 它输出视频文件持续时间 运行这个脚本给了我预期的结果 Folder C my path to folder File sample1 1280 720 mp4 LengthColumn 27 objSh
  • 如何在 MySQL 中使用 INET_ATON 进行通配符搜索 IP 地址?

    我发现这个方法可以使用 INET ATON 将 IP 地址作为整数存储在 MySQL 数据库中 https stackoverflow com a 5133610 4491952 https stackoverflow com a 5133
  • 日期函数的奇怪行为

    我今天在 StackOverflow 上遇到了这个问题 但没有得到答案 我的问题是 echo date Y m d strtotime 2012 september 09 output 2012 09 01 echo date Y m d
  • SQL查询:按字符长度排序?

    是否可以按字符总数对sql数据行进行排序 e g SELECT FROM database ORDER BY data length 我想你想用这个 http dev mysql com doc refman 5 0 en string f
  • 正则表达式检查确切的字符串是否存在,包括#

    新问题正如 Asaph 在上一个问题中所建议的 正则表达式检查确切的字符串是否存在 https stackoverflow com questions 2824291 regex to check if exact string exist
  • 在 Laravel 视图中使用 CSS?

    我刚刚开始学习 Laravel 并且可以掌握控制器和路由的基础知识 我的操作系统是 Mac OS X Lion 它位于 MAMP 服务器上 我的routes php代码 Route get function return View make
  • 使用 php 变量更改 css 类

    这里需要您的帮助 正如标题所示 我正在尝试使用 PHP 变量更改 css 类 所以基本上我想创建一个回显某些代码的循环 但我希望第一个循环中的 div 类有所不同 它应该被隐藏 这是我为使问题变得清晰而编写的简化代码 我不知道错误在哪里 请

随机推荐

  • 在android代码中创建一个套接字(不在android应用程序中),权限被拒绝

    我正在尝试在 android 源代码中打开一个套接字 具体来说 现在我在 DisplayDevice cpp 文件中 但套接字代码的位置可能会改变 就在我这样做之后 int fd socket AF INET SOCK STREAM 0 f
  • Java 用 \u 读取 unicode

    我的java程序正在从文本文件读取unicode 例如 uffff 从java GUI查看是没有问题的 但是当我尝试打印出来时 所有的文字都被覆盖了 是因为 u 或任何其他方法来避免单词被覆盖 抱歉我的英语蹩脚 谢谢 符号 uXXXX主要只
  • 对于折线图,高图表中的向下钻取功能

    我正在尝试使用可以向下钻取几个级别的高图生成折线图 Highchart 具有柱形图的此功能 但我找不到折线图的任何内容 如果我尝试将图表类型从列更改为行 那么我会得到一条无法进一步向下钻取的图表 有什么方法可以将钻取功能应用于高图表中的折线
  • 隐藏重复的单元格而不使用辅助列

    我需要隐藏某个范围内的重复单元格 与使用AdvancedFilter 它隐藏了重复的单元格 但它也阻止我进行后续的正常过滤 我使用了 FaneDure 先生提供的以下工作代码 但它取决于辅助列 我寻求相同的结果 如果它可以在不使用辅助列的情
  • Microsoft 图表控件中可以自定义标记样式吗? [复制]

    这个问题在这里已经有答案了 我在用着微软图表控件 http archive msdn microsoft com mschart 4 0 并有一个带有多种标记类型的折线图 如此之多 我的标记类型已经用完了 默认值 正方形 三角形 圆形等 是
  • 在优先 AJAX 请求的情况下,如何处理浏览器对每个域的并行请求的限制?

    想象一下以下情况 我们的网站触发了大约 20 个 甚至更多 请求 这些可以是任何类型的请求 我们不知道如何再次触发它们 在此网站上 所有请求都针对同一 url 请求可以具有订阅的事件侦听器 如果使用 Chrome 前 6 个请求将被发送 其
  • C# 递增 ToString

    我从 C WPF 添加了意外行为 private void ButtonUp Click object sender RoutedEventArgs e int quant if int TryParse Qnt Text out quan
  • 使用数组元素替换多次出现的字符串

    我在关联数组中有几个字符串 var arr 我想用相应的值替换每个键的出现 我想出的是 for var i in arr strX str replace i arr i console log
  • 如何使用 java 连接到 mariadb?

    我用过 Connection connection DriverManager getConnection jdbc mysql localhost 3306 test username password Statement stmt co
  • 如何初始化上下文? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 这是一个非常愚蠢的问题 但是我该如何
  • mySQL:使用编辑距离查找 20,000 行中的重复项

    我基本上有一个两列表 其中包含主键和大约 20 000 行的公司名称 我的任务是找到所有重复的条目 我最初尝试使用 soundex 但它会匹配完全不同的公司 只是因为它们的第一个单词相似 这让我开始使用编辑距离算法 问题是 查询花费的时间是
  • 从键为元组的字典创建数据框

    我有以下字典 其中键作为元组 d first row 3 second row 1 我想创建一个包含 3 列的数据框 Col1 Col2 和 Col3 应如下所示 Col1 Col2 Col3 first row 3 second row
  • 如何在 Powershell 中将 rtf 文件加载到 WPF RichTextBox

    有人知道我可以将 rtf 文件加载到 wpf RichTextBox 吗 在 Windows Forms 中我会这样做 RichTextFile Loadfile c myfile rtf 但我不知道如何在 WPF 中实现相同的目标 Tha
  • 如何在浏览器中使用 Babel 6 外部助手?

    首先是问题 在哪里可以找到 external helpers js 脚本 或者如何为 Babel 6 构建 external helpers 在 Babel 5 x 中 我能够使用externalHelpers选项 其中需要包括extern
  • 更改 Android Studio 的文件位置

    所以 我刚刚开始使用Android Studio 我在主 SSD 上使用 Windows 7 64 位 当我安装 IDE 时 我将 SDK 和 Android Studio 保存在辅助驱动器上 现在我注意到 Android Studio 在
  • 尝试使用 ${parent.groupid} 从子 pom 引用父 pom 时,出现“不可解析的父 POM:无法传输工件”

    我正在关注 Maven 教程 我有一个非常简单的项目 里面有几个模块 在模块 pom 上 我想通过 parent groupid 和 parent version 引用主项目 pom 版本和组 因此如果我更改其中任何一个 我就不必在子 po
  • 如何像 Facebook 一样动态重写 URL

    我使用 PHP 编写了我的网站 不幸的是艺术家简介目前是这样的 website com profiles php id xxx 这样我就可以获取 id 并查询数据库 然而 艺术家们现在要求使用 website com artistname
  • 实体框架 - 按总和分组

    这对我来说是一个相对较新的领域 我有两个实体 Inquiries and Categories Each Inquiry有一个类别和一个指示整数值的属性 称为TotalTimeSpent 每个类别有多个查询 我想要做的是生成一个按类别分组的
  • LicenseChecker 在模拟器中运行缓慢

    当模拟器到达下面的线时 需要 10 秒以上才能完成 还有其他人有这个问题吗 mChecker new LicenseChecker this new ServerManagedPolicy this new AESObfuscator SA
  • PHP 字符串连接和算术运算

    刚开始学习PHP不久 遇到了这样的问题