我有点类似于此:
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变量将被更新。虽然总是空无一人。这是范围问题吗?
答案 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)
===
成为==
和!==
到==
,看看是否有变化)
要证明这一点,请尝试添加另一个else{ }
并将$return
设置为“哦noez”(或其他内容)。