【问题标题】:What's going on with this =+ assignment?这个 =+ 任务是怎么回事?
【发布时间】:2013-07-28 15:37:34
【问题描述】:

我无意中偶然发现了以下代码 sn-p 让我摸不着头脑:

$sum = 0; $realSum = 0;

foreach (range(0,5) as $number) {
    $sum =+ $number;
    $realSum += $number
}

echo "Sum: $sum, RealSum: $realSum"; 
// prints 'Sum: 5, RealSum: 15'
?>

我想要的显然是+= 语句,但不知何故PHP 根本不会引发任何关于+= 的错误或警告。我的 IDE 也没有抱怨。

$sum =+ $number 中的 =+ 是什么东西?我在official documentation 中找不到任何相关内容。

【问题讨论】:

  • @Sean =+ 不是错字,我没有将它与+= 混淆。不过感谢您的指点。

标签: php operators assignment-operator


【解决方案1】:

这个符号是数字的符号。所以如果$number等于3,如果你输入-$number,则值为-3。

【讨论】:

  • 这是有道理的。我对为什么 PHP 会在分配后接受这个(多余的)+ 感到困惑。感谢您清除它!
【解决方案2】:
$sum =+$number;

这个类似于$sum = 0 + $number,它获取数组的最后一个值5

$realSum += $number;

但是这个就像 $realSum = $realSum + $number

【讨论】:

  • 不是0 + $number,只是数字的符号。
  • 在数学中是这样的,我们假设那里是零,分配是正确的我没有提到,因为我认为它只是普通的东西和基本的数学信息
  • Joyas 的回答更有意义,因为 PHP 的“解释器”只接受 =+=-。我刚刚尝试将=* $number 作为= 0 * $number 的简写,这会产生语法错误。不过感谢您的提示。
  • 这取决于 PHP,*number 为真,php 应该假设 1*number 代替
猜你喜欢
  • 2021-04-13
  • 1970-01-01
  • 2011-06-28
  • 2020-04-03
  • 2018-06-20
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2022-07-18
相关资源
最近更新 更多