2016-10-10 31 views
-1

我使用3个月左右的PHP,看到很多语法。
但无法理解这是什么意思。我只看到if($ foo)这意味着如果($ foo == TRUE)。或者如果($ foo ==,>,< somevalue)
但在这种情况下,如果$ foo保存某些值?PHP - 这是什么if语句的含义?

+0

在你的代码,它只是变量的赋值,你会得到相同的结果。 If条件检查比较.. –

+0

所以...如果语句正确,它与外部赋值相同? – doflamingo

+0

别人的拼写错误 – nogad

回答

2

您只是同时赋值为$foo并在if语句中对其进行评估。所以如果$foo的值对应于false,那么if语句中的代码将不会执行。举个例子:

if ($foo = 12) { // foo's value is now 12 
    // code here would execute 
} 
echo $foo; // 12 

if ($foo = 0) { // foo's value is now 0 
    // would not execute 
} 
echo $foo; // 0 
0

if说法也根本要么

  • ,则返回true,并指定字符串somevalue$foo
  • 返回false,因为somevalue不能分配给$foo

在很多情况下,这在的编写中是错误的陈述,其中某人可能想要检查$foo的值是否为字符串somevalue

要正确评价的是,一个希望以下

if ($foo == 'somevalue') //$somevalue 

=会分配一个新值,==两个值进行比较。有关更多信息,请参阅this question

0

当你有一个等号(=),它标志着赋值运算符。即if条件将始终返回true。

$a = 2; 
if ($a = 3) { 
    echo "True"; 
} else { 
    echo "False"; 
} 

//Output: True 

而如果使用逻辑运算符==,它会比较两个值并返回布尔值true/false。

$a = 2; 
if ($a == 3) { 
    echo "True"; 
} else { 
    echo "False"; 
} 

//Output: False 
+0

'if条件将始终返回true.'不正确。 https://eval.in/657910 – chris85

+0

好吧,如果你'var_dump($ a = 3);'这里,它会清楚地返回满足if条件的'int(3)True'。 –

+0

是的,如果它是'3'。如果它是假的(如演示所示),但它不会总是“真”。例如,查看手册http://php.net/manual/en/mysqli.quickstart.prepared-statements.php,如果赋值总是为true if(!($ stmt = $ mysqli-> prepare(“ INSERT INTO test(id)VALUES(?)“))){'没有任何意义。 – chris85

2

很多人会说=指定的值。然而这在if语句中很有用

if语句if($foo = 'somevalue')通常是不好的,因为it will always evaluate to true。然而if($foo = $somevalue)是有点好一点,因为它是类似于你看到什么检查数据库查询的结果时,例如用

if ($result = $mysqli->query("SELECT Name FROM City LIMIT 10")) 

如果$mysqli->query成功地运行,如果语句评估为真,因为成功的retunr结果的函数不被视为FALSE,并且在您的if语句中,您可以预期$result可用于其他mysqli_*函数。

但是如果$mysqli->query没有成功,它会返回false和if语句的计算结果为错误的,你可以建立一个else语句输出错误。如果你没有

$somevalue = $mysqli->query("SELECT Name FROM City LIMIT 10") 
if($foo = $somevalue) 

但你有点浪费时间做这样一个额外的行时,你可以跳过$somevalue一起