PHP三元运算符嵌套导致结果为0,问题出在哪里?

php三元运算符嵌套导致结果为0,问题出在哪里?

php三元运算符的困惑:结果为何为0?

我们遇到了一段php代码,旨在根据三个变量$b、$c和$a的条件来计算$a的值:

$b = 20;$c = 40;$a = $b > $c ? ($c - $b) ? 1 : (($b - $c) > 0 ? ($b + $c) ? 0 : $b * $c) : $b + $c;echo $a; // 结果输出为 0

乍一看,代码似乎没问题,但是我们却得到一个令人费解的输出:0。本文将深入研究代码,了解三元运算符是如何工作的以及为什么结果为0。

首先,让我们拆解代码:

立即学习“PHP免费学习笔记(深入)”;

外层的三元运算符检查$b是否大于$c。如果是,则执行嵌套的三元运算符;否则,$a被设置为$b $c。嵌套的三元运算符检查$c – $b是否非0。如果是,则$a被设置为 1;否则,检查$b – $c是否大于 0。如果$b – $c大于 0 并满足条件($b $c) ? 0 : $b * $c,则$a被设置为 0,否则被设置为$b * $c。

让我们逐步执行代码:

$b > $c为 false,因此执行$b $c,结果为 20 40,即 60。$b $c为真,因此执行$b $c,结果为 60。

因此,$a被设置为 60,而输出为 60。然而,我们却得到了 0。

原因在于,内部的三元运算符存在括号错误:

(($b - $c) > 0 ? ($b + $c) ? 0 : $b * $c)

正确的语法应该是:

($($b - $c) > 0) ? ($b + $c) ? 0 : $b * $c

缺乏括号会改变运算符的优先级,导致错误的求值。加上正确的括号后,代码正确执行,并输出预期值 60。

以上就是PHP三元运算符嵌套导致结果为0,问题出在哪里?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1250141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月9日 21:58:17
下一篇 2025年12月8日 11:14:09

相关推荐

  • 网站调试时URL后加?debug=2是为什么?

    为什么在网站调试时网址后要加上?debug=2? 在进行网站调试时,有时需要在网址后面加上?debug=2。这是因为浏览器通常会缓存请求,以加快加载时间。但是,这可能会导致在调试时看到的不是最新版本的网站。 为了绕过浏览器缓存,可以在网址后面加上?debug=2。这会强制浏览器向服务器发送一个新请求…

    2025年12月9日
    000
  • PHP三元运算符嵌套陷阱:为什么$b > $c却输出0?

    php三元运算符的奥秘,为何输出0? 在php中,三元运算符是一个强大的工具,可以简化复杂的条件判断。不过,当你对自己的语法基础不太自信时,谨慎起见,可以多加一些括号。 考虑以下php代码: $b = 20;$c = 40;$a = $b > $c ? ($c-$b)?1:($b-$c)&gt…

    2025年12月9日
    000
  • 后端接口为何是.php文件却返回JSON数据?

    前后端交互中,为何接口呈现为 .php 形式,内容却是 JSON? 在前端开发中,我们经常会遇到后端提供的接口以 .php 形式呈现,但内部却包含 JSON 数据。那么,为什么不直接提供 JSON 格式的接口呢? 理由: 减少通信开销: 立即学习“PHP免费学习笔记(深入)”; 直接传输 JSON …

    2025年12月9日
    000
  • Linux新手如何高效远程管理:xshell是最佳选择吗?

    xshell,操作 Linux 的利器 提到操作 Linux,很多人都会想到直接通过 SSH 命令行登录服务器。然而,对于新手来说,xshell 这种图形化界面工具无疑更加友好。 xshell:一个远程管理工具 xshell 是一款远程管理工具,它支持 SSH、Telnet 等协议,可以让你远程连接…

    2025年12月9日
    000
  • 不会直接操作Linux?Xshell如何帮你远程管理?

    Xshell:通往 Linux 世界的门户 新手在接触 Linux 时,可能会产生疑问:难道真的无法直接操作 Linux 吗?不过,借助 Xshell 等工具,一切变得触手可及。 Xshell 是一个功能强大的远程终端模拟器,专为连接和管理远程 Linux 服务器而设计。由于它能够提供安全、高效且便…

    2025年12月9日
    000
  • PHP接口返回JSON数据:为什么后台接口是.php但数据是JSON格式?

    数据交互中的 PHP 接口和 JSON 格式 对于初接触数据交互的新手来说,理解为什么后台提供的接口通常以 .php 形式呈现,但内部却是 JSON 格式可能会令人困惑。 这种做法的根本原因是为了降低沟通成本和提高效率。 沟通成本:如果后台直接提供 JSON 格式的数据,他们需要在每次修改数据时都将…

    2025年12月9日
    000
  • WAMPServer在线和离线模式有何区别及为什么离线状态下仍然可用?

    WAMPServer 服务器状态详解:在线与离线 WAMPServer 提供了在线和离线两种模式,用于控制服务器的可访问性。理解这两种模式之间的差异对于有效管理你的服务器至关重要。 在线模式 当 WAMPServer 处于在线模式时,这意味着你的计算机上的 Apache 服务器可以供以下计算机访问:…

    2025年12月9日
    000
  • 为什么我的Tomcat服务器在PC上能访问,但在移动设备上却无法访问?

    Tomcat无法从移动设备访问 问题描述: 配置在 PC 上的 Tomcat 无法通过移动设备访问,但在 PC 端可以正常访问。已确认网络连接、防火墙设置和配置信息无误。 解决方案: 建议使用其他局域网中的 PC 进行 telnet 测试: 从另一台 PC 运行命令提示符。输入命令:”t…

    2025年12月9日
    000
  • 为什么你应该升级到 PHP (或至少是 PHP )

    PHP 是无数 Web 应用程序的支柱,为全球近 80% 的网站提供支持。然而,坚持使用 PHP 7 等过时的版本会给开发人员和企业带来巨大的风险并错失机会。如果您仍在运行旧版本的 PHP,那么是时候问一下:为什么应该升级到 PHP 8.4(或至少 PHP 8.x)? 以下是此升级的重要性以及如何使…

    2025年12月9日
    000
  • 我的Tomcat服务器只能本地访问,其他设备无法连接是怎么回事?

    Tomcat访问故障疑难解答 如果你在访问PC上配置的Tomcat时遇到问题,请仔细检查以下常见原因: 问题描述: 为什么我的PC配置的Tomcat仅限于本机访问,其他设备无法访问? 可能原因: 网络配置问题:确保所有设备都在同一局域网中,并且可以互相通信。防火墙或安全软件:检查你的PC和路由器上是…

    2025年12月9日
    000
  • PHP中值无法通过HTTP请求传递的原因是什么?

    为什么 PHP 中值无法传递? 在 PHP 中,通过 HTTP 请求传递值需要使用特定的方法。当您在 HTML 表单中选择一个选项并单击提交后,请求值通常通过 GET 或 POST 方法传递。 您提到的问题可能是由于以下原因之一: 未正确使用 $team 变量: 根据您提供的代码,您没有使用 $te…

    2025年12月9日
    000
  • 为什么我的PHP表单POST数据在XAMPP环境下无法获取?

    PHP表单POST传输问题 在将独立安装的Apache与PHP切换到XAMPP后,用户发现POST方法无法获取表单中的值。以下内容梳理问题产生的原因和可能的解决方案。 原因分析 在PhpStorm中调试时,可能存在内部设置导致POST数据无法获取。 立即学习“PHP免费学习笔记(深入)”; 解决方法…

    2025年12月9日
    000
  • PHP中判断空值:is_null函数和null==运算符有何区别?

    判断空值的困惑:is_null vs. null== 在 php 中,判断变量是否为空可以使用运算符或 is_null 函数。面对这两个选择,有人可能会产生疑问:为什么要同时提供两种判断方式,它们之间有什么差别呢? is_null 和 null== 的区别 关于这两个判断方式的主要区别是: 立即学习…

    2025年12月9日
    000
  • PHP会话控制:为什么我的代码出现_SESSION_未定义的错误?

    在 php 中使用会话控制中遇到的难题 在阅读《php 和 mysql web 开发》第 23 章时,可能遇到如下代码片段: session_start();$_session_[‘sess_var’] = “hello world”;echo $_session[‘sess_var’];echo …

    2025年12月9日
    000
  • PHP:逃离日期地狱的实用方法

    企业的关键功能通常依赖于日期,例如订阅、定期付款或预订。 作为一名 php 程序员,您可能需要操作日期/时间。 开始使用第三方库?真的吗? 虽然坚持使用本机 api 来掌握技能并了解语言的工作原理通常是一个很好的做法,但让我们务实一些。 carbon 是一个功能强大的库,它扩展了 datetimei…

    2025年12月9日
    000
  • phpini 概述:提高性能、安全性和灵活性

    目录 php.ini简介 什么是 php.ini?为什么它很重要? php.ini 的关键方面 错误处理资源限制安全设置会话管理时区配置文件上传限制 php.ini 如何影响 PHP 性能 内存和执行限制缓存机制开发与生产中的错误处理 为什么 php.ini 对于 PHP 开发很重要 立即学习“PH…

    2025年12月9日
    000
  • 一点灾难,一大动力:构建 CLI Secret Manager

    那么,让我们来谈谈一个变成重大动机的小不幸。我刚从盒子里拿出来的闪亮新 macbook pro m3 在例行软件更新后决定将自己变砖。 提示戏剧性的音乐。随之而来的是我所有宝贵的数据,包括那些讨厌的秘密,如 api 密钥、ssh 密钥和个人 shell 脚本。最糟糕的部分?距离关键的生产部署只有两天…

    2025年12月9日
    000
  • PHP 的新功能

    php 8.4:新增功能以及如何使用它 php 8.4 现已推出,带来了一些令人兴奋的功能,可以简化编码并提高性能。本文通过简单的示例解释了最重要的更新,使各种技能水平的开发人员都能轻松理解和使用这些功能。 1. 属性挂钩 属性挂钩可让您自定义获取或设置属性时发生的情况。这消除了对单独的 gette…

    2025年12月9日
    000
  • 为什么使用 POST 进行更新比超链接更安全

    在 php 中更新记录时,选择使用 执行操作(通常通过表单和 http 方法,如 post 或 put)还是 超链接(通常使用 get 方法)归结为安全性和最佳实践。这就是为什么执行操作是首选: 安全 get(超链接): 由链接触发的操作通常使用 get http 方法,该方法旨在检索信息,而不是修…

    2025年12月9日
    000
  • 要避免的 fetch() 和 XMLHttp 错误

    可悲的是,我没有避免这些错误。我希望这可以帮助其他人在尝试更新网页而不完全下载新版本时避免它们。我最终得到的代码似乎有效: async function fetchdbsingle(url, str) { const datatosend = str; console.log(‘fetchdbsin…

    2025年12月9日
    000

发表回复

登录后才能评论
关注微信