PHP中的$a $是多么模糊?

php手册声称:
$a = 1;
echo ++$a + $a++;

在它的语法下是模棱两可的,但对我来说似乎非常清楚. $a和$a首先从左到右进行评估,所以$a递增然后返回2,$a返回2然后递增. 2 2的总和是4,所以它会回显4.但是,The PHP Manual非常清楚地说它可以打印4或5.

php规范没有指定操作将从左到右执行吗?

即使它没有强制执行操作将从左到右执行,在这种情况下,它不会返回4无论如何?

编辑:我重读了页面,并声明它由每个特定的运算符决定.具有最低优先级,并且从左到右进行评估,因此看起来我之前的假设是正确的.我还是不明白.

请注意,这只是我的拙见.

我认为这个结果下面的想法是,当有一个运算符时,没有一个aperands优先,并且在一个操作中,一个变量被保留为一个引用,而不是在所有计算过程中被其结果替换,直到最后一个(加,在这个例子中).所以当它从l-r开始时:

$a = 1;
++$a + $a++
operand 1 --> ++$a ==> $a = ++1 = 2
result (where $a = 2) --> 2 + (2++) = 4

否则:

$a = 1;
++$a + $a++
operand 2 --> $a++ ==> $a = 1
// new operation on the left side
// so the value gets incremented ==> $a = 2
result (where $a = 2) --> (++2) + 2 = 5

不过,我对此并不确定.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧