如果函数返回值,则有条件地赋值变量

时间:2016-09-12 17:24:26

标签: php undefined return-value

我已经退出PHP编程一段时间了,但我几乎可以肯定我曾经能够编写如下内容:

function checkData($data, $moreData) {
    if ($foo != validate($data)) {
        return false;
    }
    if ($bar != validate($moreData)) {
        return false;
    }
    $result = "$foo" . "$bar";
    return $result;
}

......其中" $ foo"和" $ bar"尚未确定尚未确定的地方"验证()"函数返回验证数据,如果验证失败则返回false。

我无法弄清楚我出错的地方,但该代码(以及它的变体)正在抛出一个"未定义的变量" $ myVar的错误。

这个概念的正确语法是什么?

2 个答案:

答案 0 :(得分:0)

多年来,PHP变得越来越严格。您应该始终实例化您的变量。以下修改应解决您的“未定义变量”问题:

function checkData($data, $moreData) {
    $foo = $bar = null;
    if (!$foo = validate($data)) {
        return false;
    }
    if (!$bar = validate($moreData)) {
        return false;
    }
    $result = "$foo" . "$bar";
    return $result;
}

这不是抛出警告的条件,而是您尝试将不存在的变量分配给$result的地方。此外,您的条件是检查比较而不是分配。

答案 1 :(得分:0)

我认为你的意思有点不同。而不是

if ($foo != validate($data)) {

你一直在使用这个

if (!$foo = validate($data)) {

发生的事情是: 1.调用验证功能 2.将结果分配给变量 3.检查该变量的条件。 它与

相同
$foo = validate($data)
if(!$foo)

但是你可以理解,不推荐这样做的方式,因为它很难阅读并需要解释(否则为什么你在这里问它,呵呵)