繁体   English   中英

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

[英]Can I define a variable in a PHP if condition?

例如,我可以这样做:

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

如果function什么都没有返回,我想把go放到else语句中。

是的,这行得通,而且这种模式经常被使用。

如果$my_array被分配了一个值,那么条件将被满足。

键盘

<?php

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

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

反之亦然……

如果 function 没有返回任何内容,我想将 go 放入 else 语句中。

不返回任何内容的 function 将返回NULL ,这是错误的。

键盘

<?php

function wp_get_category($id) {
}

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

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

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

}

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

你可能想要这样的东西:

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

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

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

感谢先前对键盘链接的回答,我自己做了一个测试理论。 剧透警报:它有效。

http://codepad.org/xTwzTwGR

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

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

我总是发现这个原则令人困惑,因为它似乎对我来说从来没有用过:采用以下代码:

if ($pid = $arr['Key']){

这可能会引发错误Undefined index: Key 同样,我得到了相同的结果:

if (!empty($pid = $arr['Key']))

现在用PHP7+的解决方法如下:

if ($pid = $arr['Key']?? false)

这将允许具有空值设置的数组$pid = false; 并且不触发 IF 语句。

我希望这能帮助别人,因为 arrays 把我扔了,但是双合并非常有用,可以在if概念中使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM