PHP:在if语句中分配多个变量
我似乎无法在PHP:在if语句中分配多个变量,php,if-statement,variable-assignment,Php,If Statement,Variable Assignment,我似乎无法在“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) &
“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”语句中分配多个变量,还是仅限于一个?需要在每个分配中添加括号
()
,如下所示:-
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 = ("foo" && [other valild assignment] )
这将导致,
$result1
变为true
而echo true
/boolean true(strval(true)
)的字符串值输出为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;
}
用下面的例子检查
<?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';
}
?>
正确。+1.但是需要添加更多关于1条
为什么会出现的解释吗?括号中的内容首先执行。如果没有它们,它将是:如果($result1=a(1)和&$result2=b(1))导致第二个变量未赋值。正确。+1。但是需要添加更多关于为什么出现1 bar
的解释?啊哈。真不敢相信我以前从没见过这个。通常,我要么在if条件中只指定一个值,要么进行多重比较($a=='foo'),这显然不会跨&&和类似的结构进行关联。我认为&&是一种条件分隔符,但显然在执行赋值时它不是。谢谢我不认为这是在解决OP的问题,或者给他一个线索,为什么1 bar
会出现在他的案例中?这是一个非常糟糕的主意。如果在两个作业之间设置“或”条件会怎么样?如果(e=mc^2或e=mc^2)。。。第二个任务执行了吗?
<?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';
}
?>