PHP变量范围和IF

时间:2011-09-12 13:59:53

标签: php

我有点类似于此:

function get_gender ($gid){ 
    $return= '';

...some code ..

    if ($male !== 0 && $female !== 0){
        $return = 'mixed';
    }else if ($male !== 0 && $female == 0){
        $return = 'male';
    }
    return $return;

}

我知道其中一个条件已满足,所以我假设$ return变量将被更新。虽然总是空无一人。这是范围问题吗?

4 个答案:

答案 0 :(得分:4)

在您的代码中,如果$male为零,则永远不会检查$female,也不会运行任何分配,只留下$return

答案 1 :(得分:1)

不,这是一个调试问题。范围与此无关,因为它不会更改(至少在您提供的代码中没有)。

试试这个:

if ($male !== 0 && $female !== 0){
    $return = 'mixed';
    echo 'Return: ' . $return;
}else if ($male !== 0 && $female == 0){
    $return = 'male';
    echo 'Return: ' . $return;
} else {
    echo 'None of the conditions met';
}

此外,你不想为此布尔(true,false)而不是显式整数检查吗?

答案 2 :(得分:1)

这里不应该有任何范围。

很可能你的问题在于你的条件。特别是使用strict equality(即!==)。

答案 3 :(得分:0)

不,这不是范围问题。你的变量必须设置错误,因此不符合条件。也许这就是因为结果应该是女性(我看不到一个选项),或者是因为你使用了明确的类型敏感条件(也许你的变量包含字符串ander - 尝试使===成为==!====,看看是否有变化)

要证明这一点,请尝试添加另一个else{ }并将$return设置为“哦noez”(或其他内容)。