我不确定这是否可能,但我正在寻找一种在
if (...) { }
语句中检查变量时分配变量的方法。基本上是什么使得这个......
$var = somefunction();
if ($var == 10) {
#do something
}
进入这样的事情
if(($var = somefunction()) == 10) {
#do something
}
正如我所说,我不确定这是否可能,但只是想知道是否有办法先保存分配变量。我想要这个,因为我有一个函数,它要么输出数组,要么输出 false。
谢谢:)
这也可以:
if(($var = somefunction()) == 10) {
#do something
}
但是您提出的第一种方法简单、清晰且可读,除了您需要使用
==
或 ===
,而不是 =
,进行相等性检查之外:
$var = somefunction();
if ($var == 10) {
#do something
}
你为什么不直接使用它呢?
我相信这样的事情会起作用:
if(($var = somefunction()) == 10) {
//Do something
}
本质上这是一个评估问题。首先评估括号,这就是为什么它会首先执行
$var = somefunction()
,然后检查返回值($val 的值)是否为 10。
如果以后不需要该变量,那么
if (somefunction() == 10) {
//do something
}
也足够了。
我总是发现自己想要这样做,以减少代码行数,而且我曾经这样做过,但由于这个原因,我多年前遇到了一个错误。我确信代码完全做了它应该做的事情,但那次经历让我不这样做......并且看,在这里我再次想再做一次! (你好,未来的自己)
if($user = getUser()) {
die('We got a user, they are '.$user);
} else {
die('We did not get a user');
}
至少在 PHP 8.1 中,这似乎可行。我更喜欢这个:
$user = getUser();
if($user) {
die('We got a user, they are '.$user);
} else {
die('We did not get a user');
}
这样做的原因是,它提倡一种易于理解的编码风格,并将赋值运算符 (
=
) 留在 if()
之外,而它绝对不属于这里。
它还提供了一个机会,可以使用您最喜欢的调试工具(例如
$user
或您拥有的工具)检查 die(var_dump($user))
的值,而无需分解 if()
条件。
试试这个
$var ;
if (true) {
$var= somefunction();
if($var==10) {
# Handler
}
}