我可以在PHP if条件中定义一个变量吗?

我可以在PHP if条件中定义一个变量吗?,php,if-statement,Php,If Statement,例如,我可以做: if ($my_array = wp_get_category($id)) { echo "asdf"; } else { echo "1234"; } 如果函数没有返回任何内容,我想进入else语句。是的,这会起作用,而且该模式经常使用 如果$my_array被分配了一个真实值,则该条件将得到满足 您可能需要以下内容: if (!is_null($my_array = wp_get_category($id)) { echo "asdf"; els

例如,我可以做:

if ($my_array = wp_get_category($id)) {
    echo "asdf";
} else {
    echo "1234";
}

如果函数没有返回任何内容,我想进入else语句。

是的,这会起作用,而且该模式经常使用

如果
$my_array
被分配了一个真实值,则该条件将得到满足


您可能需要以下内容:

if (!is_null($my_array = wp_get_category($id)) {
    echo "asdf";
else
    echo "1234";

假设函数在失败时返回null。您可能需要对其进行一些调整。

这实际上是一种常见的模式,可以正常工作。但是,对于更复杂的情况,或者根本不需要考虑使用它,您可能需要三思。想象一下,如果维护您的代码的人出现并看到

if ($x = one() || $y = two() && $z = three() or four()) {

}

在条件语句中使用变量之前,最好先声明变量。

我发现,我对在同一语句中声明变量然后在后续条件中立即使用它的规则感到疑惑

多亏了前面对代码板链接的回答,我自己做了一个测试。 剧透警报:它起作用了


以下是定义任何变量(安全)的另一种选择:


非常感谢。很高兴知道这有用。下一次当我遇到这些问题时,我将不得不尝试使用代码板。同样重要的是,该变量不在if。。。有趣的是,如果不包含声明,它将无法工作。括号是必要的,可以将“=”右侧的所有内容分组在一起。
if (!is_null($my_array = wp_get_category($id)) {
    echo "asdf";
else
    echo "1234";
if ($x = one() || $y = two() && $z = three() or four()) {

}
$my_array = ($my_array = $wp_get_category($id)) ?: /* else statement here */;