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

时间:2011-07-19 01:38:43

标签: php if-statement

例如,我可以这样做:

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

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

5 个答案:

答案 0 :(得分:50)

是的,这样可行,并且经常使用该模式。

如果为$my_array分配了 truthy 值,则会满足条件。

CodePad

<?php

function wp_get_category($id) {
   return 'I am truthy!';
}

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

反过来也是如此......

  

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

不返回任何内容的函数将返回NULL,即 falsey

CodePad

<?php

function wp_get_category($id) {
}

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

答案 1 :(得分:4)

这实际上是一种常见的模式,可行。但是,您可能需要三思而后行,将其用于更复杂的案例,或者根本不用。想象一下,如果有人维护您的代码并且看到了

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

}

在条件中使用它们之前声明变量可能更好。

答案 2 :(得分:3)

你可能想要这样的东西:

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

假设函数在失败时返回null。您可能需要稍微调整一下。

答案 3 :(得分:2)

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

感谢前面的键盘链接答案,我自己来测试这个理论。 剧透警报:它有效。

http://codepad.org/xTwzTwGR

答案 4 :(得分:1)

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

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