我似乎无法在"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;
}
?>
返回“1 bar”而不是“foo bar”。如果我删除第二个条件/赋值,则返回“foo”。
有没有办法在“if”语句中分配多个变量,还是仅限于一个?
答案 0 :(得分:4)
需要在每个作业中添加括号()
,如下所示: -
if (($result1 = a(1)) && ($result2 = b(1)))
{
echo $result1 . ' ' . $result2;
}
输出: - https://eval.in/804770
@marmeladze 在此提供正确的解释: -
答案 1 :(得分:1)
这完全是关于运算符优先级的
<?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
和echo true
/ boolean true(strval(true)
)输出的字符串值/是1
您还可以查看该修订版https://repl.it/IQcU/1
看下面的陈述
$result1 = a(1) && $result2 = b(1)
等同于此。
$result1 = (a(1) && $result2 = b(1))
答案 2 :(得分:1)
最后一个if语句需要一些括号,它应该是:
if (($result1 = a(1)) && ($result2 = b(1)))
{
echo $result1 . ' ' . $result2;
}
这可以确保括号中的内容首先执行,这将有所帮助。
答案 3 :(得分:0)
您必须添加==
来检查条件。
试试这个,
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';
}
?>