首页 > 解决方案 > 在 PHP 中同时进行运算符和赋值?

问题描述

在本声明中:

1 + $newVar = 200;

$newVar 被创建并赋值为 200。这是如何工作的? 优先规则表明,加法首先发生,在分配之前。我无法解决这个问题。如果变量首先使用 + 运算符求值,赋值是如何发生的?

PHP 提供了这个小块。这是否意味着这些规则适用,除非它们不适用?

笔记:

尽管 = 的优先级低于大多数其他运算符,但 PHP 仍然允许类似于以下的表达式:if (!$a = foo()),在这种情况下,foo() 的返回值被放入 $a。

标签: php

解决方案


在这种情况下,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

!具有更高的优先级并且也是右结合的,但赋值仍然首先评估。


推荐阅读