php - 在 PHP 中同时进行运算符和赋值?
问题描述
在本声明中:
1 + $newVar = 200;
$newVar 被创建并赋值为 200。这是如何工作的? 优先规则表明,加法首先发生,在分配之前。我无法解决这个问题。如果变量首先使用 + 运算符求值,赋值是如何发生的?
PHP 提供了这个小块。这是否意味着这些规则适用,除非它们不适用?
笔记:
尽管 = 的优先级低于大多数其他运算符,但 PHP 仍然允许类似于以下的表达式:if (!$a = foo()),在这种情况下,foo() 的返回值被放入 $a。
解决方案
在这种情况下,PHP 在赋值之前对算术表达式求值是没有意义的,因为算术运算符返回一个值,而您不能将 a 分配value
给 a value
。因此,在这种情况下,PHP 似乎有点违反其规则并首先进行分配。
一些显示分配的代码首先发生:
$nVar = 0;
echo (1 + $nVar = 200); //201
echo $nVar; //200
如果+
首先发生(并且以某种方式合法且有意义),它们都会 echo 200
,因为 (1 + $nVar) 不会将 $nVar 设置为 1,并且您将获得分配的结果。
也看看这个例子:
$nVar = true;
echo (!$nVar = false); // true | 1
echo '<br/>br<br/>';
var_dump($nVar); // false
!
具有更高的优先级并且也是右结合的,但赋值仍然首先评估。
推荐阅读
- powershell - 如何在powershell中将变量放入文件名
- elasticsearch - AWS 托管 elasticsearch S3 快照权限
- javascript - 此正则表达式在 JS Function 中不起作用。有谁知道原因?
- security - 无需密码即可访问 OneDrive 帐户
- python - 收到类型错误:序列项 0:预期的 str 实例,找到浮点数
- ios - 排查 AVContentKeySessionDelegate didProvide keyRequest 不委托成功或失败
- java - Antrl4:匹配 '\r\n' 和 '\n' 作为一个符号
- node.js - K8S 集群中的 Google FCM firebase-admin initializeApp() 错误
- html - 无法适应 div 内可变尺寸的图像
- python - Python kivy 安装