没有括号的字符串连接内的算术运算会导致奇怪的结果

2023-12-10

考虑以下代码行:

<?php
$x = 10;
$y = 7;

echo '10 - 7 = '.$x-$y;
?>

其输出为 3,这是计算 $x-$y 的预期结果。然而,预期输出是:

10 - 7 = 3

因此,我的问题是,我与计算连接的字符串发生了什么?我知道为了产生我期望的结果,我需要将算术运算括在括号中:

<?php
$x = 10;
$y = 7;

echo '10 - 7 = '.($x-$y);
?>

outputs

10 - 7 = 3

但由于 PHP 不会抱怨原始代码,我想知道在这种情况下生成的输出背后的逻辑是什么?绳子去哪儿了?如果有人能解释它或指出 PHP 手册中解释它的位置,我将不胜感激。


你的绳子'10 - 7 = '正在连接$x。那么这被解释为int这导致10进而7被减去,结果是3.

如需更多解释,请尝试以下操作:

echo (int) ('10 - 7 = ' . 10); // Prints "10"

有关字符串到数字转换的更多信息,请访问http://www.php.net/manual/en/language.types.string.php#language.types.string.conversion

如果字符串以有效的数字数据开头,则这将是使用的值

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

没有括号的字符串连接内的算术运算会导致奇怪的结果 的相关文章

随机推荐

  • “~”运算符在此脚本中做什么? [复制]

    这个问题在这里已经有答案了 您好 我从特定索引中删除一个数组 我附带了这个脚本 var arr 1 2 3 4 var index 2 if index arr splice index 1 我谷歌 what does operator d
  • 使用Spring SpEL表达式获取Annotation中引用的动态参数

    我想做的是拥有一个看起来很像 Spring 提供的 Cacheable Annotation 的注释 在方法之上使用 如下所示 CleverCache key orders concat id public Order getOrder i
  • 通过管道传递多个参数和最后一个函数的结果

    我正在使用 Ramda js 构建一个管道 它接受三个参数 第一个函数需要这三个参数 其结果用于第二个函数 但是 第二个函数还需要初始参数之一 我无法弄清楚构建类似的东西的分支 在伪代码风格中 我需要这样的东西 const composed
  • OAuth、带参数的 POST 问题

    我正在使用 Jon Crosby 的开源 Objective C OAuth 库http code google com p oauthconsumer 对于一些不处理令牌的基本 http 身份验证 仅处理消费者密钥和消费者秘密 我的代码非
  • 在 Blazor WebAssembly 应用程序中授权普通 Razor 页面?

    我正在使用 Blazor Wasm 编写 SPA 我使用了标准模板并包含托管在服务器中的用户帐户 该服务器也创建了服务器应用程序 到目前为止一切都很好 我想补充一点 我正在使用 Net5 RC2 但我认为这不是我的问题 我希望在服务器和客户
  • Weka GUI 和 Weka 通过 Java 代码得到不同的结果

    我正在使用 NaiveBayesMultinomialText 分类器在 Weka 中应用文本分类 问题是 当我使用 GUI 来执行此操作并在相同的列车数据上进行测试 无需交叉验证 时 我获得了 93 的准确率 而当我尝试通过 java 代
  • 使用maven将版本号输出到文本文件

    我想生成一个 zip 文件 该文件将使用 Maven 更新应用程序 该 zip 将托管在服务器上 我使用程序集插件来生成 zip 不过 我希望 maven 自动生成一个文本文件 将当前版本号存储在 zip 之外 这怎么可能 编辑 我使用 M
  • 使用 ggplot 实现多年销售的同步 X 轴

    我有从2012 01 01到现在 2015 11 20 的1417天的销售数据 我不知道如何在同一年的窗口中拥有单年 1月1日 12月31日 轴和每年的销售额 即使使用ggplot scolor as factor Year option
  • 在不使用 SQLAlchemy 的情况下在 Flask 工厂函数中配置 MySQL 数据库

    我是 Flask 新手 正在尝试使用 MySQL 数据库构建一个简单的应用程序 但是 我不想使用 SQLAlchemy 相反 我想使用mysql connector并将 SQL 语句定向到数据库中的 SELECT INSERT UPDATE
  • 使用 CMake 和 Conan 的外部库的未定义引用

    我正在尝试开发一个程序 使用 Conan 和 CMake 以及 LibLogicalAccess 库与 PCSC USB 读卡器进行通信 我按照构建和安装库的说明进行操作 似乎进展顺利 我使用 main cpp 文件创建了一个小型简单的控制
  • 如何在将上传的文件保存到目录之前重命名它?

    下面是我用来将文件上传到目录的代码 效果很好 我的主要问题是 move uploaded file 就是将上传的文件保存到目录中的 也是我猜测的move uploaded file 是为其设置名称的人 如何将文件名更改为随机数 我尝试在下面
  • 问号和冒号(?:三元运算符)在 Objective-C 中意味着什么?

    这行代码是什么意思 label frame inPseudoEditMode kLabelIndentedRect kLabelRect The and 让我困惑 这是C三元运算符 Objective C 是 C 的超集 label fra
  • 八度舍入和评估顺序

    在八度我得到 1 0 05 0 95 0 and 1 0 95 0 05 4 1633e 17 据我所知 这是由求值顺序与近似二进制表示相结合引起的 0 05 为 0 00 0011 和 0 95 为 0 11 1100 有人可以给我整个故
  • mailto 与 Dojo 一起使用时导致 IE8 中出现空白页面

    由于某种原因 在 IE 中 准确地说是 Win 7 中的 IE8 当我单击 mailto 链接时 最终当前页面被地址栏中带有 mailto 的空白页面替换 具体来说 当我单击 mailto 链接时会发生以下情况 新的 about blank
  • icCube - 如何使用 Apache Web 服务器对 icCube 进行身份验证

    我目前正在编写一个 Web 应用程序来访问我们 ICCube 系统的报告 应用程序页面托管在与 IcCube 服务器不同的服务器上 该服务器当前是本地 Apache 服务器 xampp 使用基本身份验证对用户进行身份验证 然后他们才能访问我
  • 如何使用 Qt oauth 创建登录页面?

    我一直在网上寻找如何在 Qt 桌面应用程序打开时创建身份验证页面 我已经构建了该应用程序 它非常小 仅由 main cpp 调用的 MainWindow 组成 现在我想在用户打开应用程序时添加一个身份验证页面 我创建了一个 Google A
  • 回发后将焦点设置在文本框上

    我有一个带有 3 个文本框的搜索页面 用户可以使用它们过滤搜索 我将焦点放在包含文本的文本框上 如果多个文本框包含文本 则只需关注最后一个文本框 private void SetFocusOnTextBox ControlCollectio
  • 无法在 gradle 同步上添加名称为“googleServices”的扩展程序

    我正在使用 ionic 并构建一个应用程序 该应用程序也使用 cordova plugin firebase 进行消息传递和分析插件 当我为 Android 构建这个应用程序时 我去了 android studio 进行测试 但 gradl
  • 将声音(wav)文件从目标c传递到javascript

    我正在 Objective C 中录制声音文件 wav 格式 我想使用 Objective C 将其传递回 JavascriptstringByEvaluatingJavaScriptFromString 我想我必须将 wav 文件转换为
  • 没有括号的字符串连接内的算术运算会导致奇怪的结果

    考虑以下代码行 其输出为 3 这是计算 x y 的预期结果 然而 预期输出是 10 7 3 因此 我的问题是 我与计算连接的字符串发生了什么 我知道为了产生我期望的结果 我需要将算术运算括在括号中 outputs 10 7 3 但由于 PH