PHP:在if语句中赋值多个变量
PHP: Assign multiple variables in if statement
我似乎无法在 "if"
语句中分配多个变量。以下代码:
<?php
function a ($var)
{
if ($var == 1)
{
return 'foo';
}
return false;
}
function b ($var)
{
if ($var == 1)
{
return 'bar';
}
return false;
}
if ($result1 = a(1) && $result2 = b(1))
{
echo $result1 . ' ' . $result2;
}
?>
Returns“1 栏”而不是 "foo bar"。如果我删除第二个 condition/assignment 它 returns "foo".
有没有办法在 "if" 语句中分配多个变量,或者我们只能分配一个?
需要在每个作业中添加括号()
,如下所示:-
if (($result1 = a(1)) && ($result2 = b(1)))
{
echo $result1 . ' ' . $result2;
}
@marmeladze 给出了正确的解释:-
这都是关于运算符优先级的
<?php
function a ($var)
{
if ($var == 1)
{
return 'foo';
}
return false;
}
function b ($var)
{
if ($var == 1)
{
return 'bar';
}
return false;
}
if (($result1 = a(1)) && ($result2 = b(1)))
{
echo $result1 . ' ' . $result2;
}
?>
更新
赋值运算符=
是右结合的,也就是说,
$result1 = a(1) && $result2 = b(1)
等价于
$result1 = (a(1) && $result2 = b(1))
评估
$result1 = ("foo" && [other valild assignment] )
这将导致
$result1
变为 true
and echo true
/string 布尔值 true (strval(true)
) outputs/is 1
你也可以检查那个版本,https://repl.it/IQcU/1
查看下面的语句
$result1 = a(1) && $result2 = b(1)
相当于这个
$result1 = (a(1) && $result2 = b(1))
最后一个 if 语句需要一些括号,应该是:
if (($result1 = a(1)) && ($result2 = b(1)))
{
echo $result1 . ' ' . $result2;
}
这样可以确保括号中的内容首先执行,这将有所帮助。
您必须添加 ==
才能检查条件。
试试这个,
if ($result1 == a(1) && $result2 == b(1))
{
echo $result1 . ' ' . $result2;
}
使用 belo 示例进行检查
<?php
function a ($var)
{
if ($var == 1)
{
return 1;
}
return false;
}
function b ($var)
{
if ($var == 1)
{
return 2;
}
return false;
}
if (1 == a(1) && 2 == b(1))
{
echo 'success';
}
?>
我似乎无法在 "if"
语句中分配多个变量。以下代码:
<?php
function a ($var)
{
if ($var == 1)
{
return 'foo';
}
return false;
}
function b ($var)
{
if ($var == 1)
{
return 'bar';
}
return false;
}
if ($result1 = a(1) && $result2 = b(1))
{
echo $result1 . ' ' . $result2;
}
?>
Returns“1 栏”而不是 "foo bar"。如果我删除第二个 condition/assignment 它 returns "foo".
有没有办法在 "if" 语句中分配多个变量,或者我们只能分配一个?
需要在每个作业中添加括号()
,如下所示:-
if (($result1 = a(1)) && ($result2 = b(1)))
{
echo $result1 . ' ' . $result2;
}
@marmeladze 给出了正确的解释:-
这都是关于运算符优先级的
<?php
function a ($var)
{
if ($var == 1)
{
return 'foo';
}
return false;
}
function b ($var)
{
if ($var == 1)
{
return 'bar';
}
return false;
}
if (($result1 = a(1)) && ($result2 = b(1)))
{
echo $result1 . ' ' . $result2;
}
?>
更新
赋值运算符=
是右结合的,也就是说,
$result1 = a(1) && $result2 = b(1)
等价于
$result1 = (a(1) && $result2 = b(1))
评估
$result1 = ("foo" && [other valild assignment] )
这将导致
$result1
变为 true
and echo true
/string 布尔值 true (strval(true)
) outputs/is 1
你也可以检查那个版本,https://repl.it/IQcU/1
查看下面的语句
$result1 = a(1) && $result2 = b(1)
相当于这个
$result1 = (a(1) && $result2 = b(1))
最后一个 if 语句需要一些括号,应该是:
if (($result1 = a(1)) && ($result2 = b(1)))
{
echo $result1 . ' ' . $result2;
}
这样可以确保括号中的内容首先执行,这将有所帮助。
您必须添加 ==
才能检查条件。
试试这个,
if ($result1 == a(1) && $result2 == b(1))
{
echo $result1 . ' ' . $result2;
}
使用 belo 示例进行检查
<?php
function a ($var)
{
if ($var == 1)
{
return 1;
}
return false;
}
function b ($var)
{
if ($var == 1)
{
return 2;
}
return false;
}
if (1 == a(1) && 2 == b(1))
{
echo 'success';
}
?>