PHP:在if语句中分配多个变量
Posted
技术标签:
【中文标题】PHP:在if语句中分配多个变量【英文标题】:PHP: Assign multiple variables in if statement 【发布时间】:2017-10-25 14:53:29 【问题描述】:我似乎无法在 "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 (e=mc^2 or E=Mc^2) ... 第二个赋值执行了吗? 【参考方案1】:需要在每个作业中添加括号()
,如下所示:-
if (($result1 = a(1)) && ($result2 = b(1)))
echo $result1 . ' ' . $result2;
输出:-https://eval.in/804770
@marmeladze在这里给出了正确的解释:-
Why 1 bar
is coming through OP's code
【讨论】:
【参考方案2】:这都是关于运算符优先级的
<?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;
?>
https://repl.it/IQcU
更新
赋值运算符=
是右关联的,也就是说,
$result1 = a(1) && $result2 = b(1)
等价于,
$result1 = (a(1) && $result2 = b(1))
评估
$result1 = ("foo" && [other valild assignment] )
这将导致,
$result1
变为 true
和echo true
/字符串值的布尔真(strval(true)
)输出/是1
您也可以查看该修订版,https://repl.it/IQcU/1
查看下面的语句
$result1 = a(1) && $result2 = b(1)
相当于这个。
$result1 = (a(1) && $result2 = b(1))
【讨论】:
正确。+1。但是需要添加更多关于为什么1 bar
来的解释?
啊哈。不敢相信我以前从未遇到过这种情况。通常,我要么在 if 条件中只分配一个值,要么进行多重比较($a == 'foo'),这显然与 && 和类似结构没有关联。我认为 && 是一种条件分隔符,但显然在分配时它不是。谢谢!【参考方案3】:
最后一个 if 语句需要一些括号,它应该是:
if (($result1 = a(1)) && ($result2 = b(1)))
echo $result1 . ' ' . $result2;
这样可以确保括号中的东西首先被执行,这会有所帮助。
【讨论】:
正确。+1。但是需要添加更多解释为什么1 bar
来了?
括号里的东西先执行。如果没有它们,它将是: if ($result1 = a(1) && $result2 = b(1)) 导致第二个变量未赋值。【参考方案4】:
您必须添加==
来检查条件。
试试这个,
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';
?>
【讨论】:
我认为这无论如何都不是解决 OP 的问题或给他一个线索,为什么1 bar
会出现在他的案子中?以上是关于PHP:在if语句中分配多个变量的主要内容,如果未能解决你的问题,请参考以下文章