PHP中的Operators = vs. ==

时间:2013-11-25 23:07:13

标签: php operators

我正在从一本书中学习基本的PHP,根据我的阅读,=是一个赋值运算符,而==是一个比较运算符。所以......

$x = 5;
$x == 5: true

......有道理。然而,这本书给出了一个令我困惑的例子:

if (++$x == 10)
    echo $x;

为什么==?我们不是想说“如果++ $ x等于10,那么回声$ x”......?那看起来像是:if(++ $ x = 10)。前者就像在条件陈述中提出一个问题,这是不合逻辑或多余的。

6 个答案:

答案 0 :(得分:4)

==表示相等,因此条件读为:

如果预先递增$x等于10,则回显$x

=是赋值,其中变量设置为包含值:

$word = 'hello';
$number = 5;
// etc.

echo "I said $word $number times!";

关于增量操作符:

在学习PHP(和/或其他语言)时,您会看到++$x$i--之类的内容。这些是递增/递减运算符。 其中与他们正在操作的变量相关的位置非常重要。

如果它们在变量之前放置,如++$x,则它是一个预增量/减量。这意味着在对变量进行任何其他操作之前执行操作。如果它位于之后的,如$x++,那么它是一个后递增/递减,这意味着之后会执行该操作。

在示例脚本中最容易看到:

$x = 5;

echo ++$x; // 6
echo $x++; // ALSO 6
echo $x; // NOW 7

答案 1 :(得分:0)

在评估条件本身之前执行

++$x,因此这种情况是正确的:

$x = 9;
if (++$x == 10) {
    //this is executed
}

这可用于构建非常短的while循环:

// Count from 1 to 10
$i = 0
while ($i <= 10) {
    echo ++$i;
}

$i++++$i之间的差异是递增和评估的顺序:

// Count from 0 to 9
$i = 0
while ($i <= 10) {
    echo $i++;
}

答案 2 :(得分:0)

我建议不要在if语句中递增/递减变量......这对代码可读性不好。在任何情况下,你仍然在这里进行比较,你只是增加X的值。

以这种方式考虑:

if((++$x) == 10) 

你在'=='的左边有一个表达式,你要与右边的表达式进行比较。首先评估++ $ x,然后将其结果与10进行比较。

答案 3 :(得分:0)

本书的内容是:如果变量在10处为真,则将变量写出。 if语句评估条件是真还是假..所以

   if ($x == 10) 
选中时

同样如此:

   $x = 9
   if (++$x == 10)

答案 4 :(得分:0)

我们总是在条件语句中提问,并根据结果是真还是假来判断。如果你说++ $ x = 10,你会说“将一个添加到X,然后将X的值设置为10”。相反,你想在我们向X IS添加一个之后知道IF,它等于10.

=表示将左侧的表达式设置为右侧的值 ==表示如果左边的表达式与右边的值相同,请告诉我。

答案 5 :(得分:0)

语法=是赋值:

$Var = "String"; // $Var is now set to contain "string"

==是一个比较运算符:

if ($Var == "Value){
  // Since var is set to "string", the comparison fails

}

你的例子:

if (++$x == 10){

}

与此相同:

 $i = 0;
 while ($i < $x){
  if ($x == 10){
   break;
  }
   ++$x;
 }