我有一个大致类似的东西:
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变量将被更新。虽然它总是空着回来。这是范围问题吗?
在您的代码中,如果$male
为零,则从不检查$female
,并且两个赋值都不运行,使$return
为空。
不,这是调试问题。Scope在这里没有任何作用,因为它没有改变(至少在您提供的代码中没有改变)。
试试这个:
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';
}
此外,难道你不希望为this (true, false)使用布尔值而不是显式的整数检查吗?
这里没有作用域应该不是问题。
很可能你的问题在于你的环境。特别是使用严格相等(即!==
)。
不,这不是作用域问题。你的变量一定是设置错了,所以没有满足条件。也许那是因为结果应该是女性(我看不到一个选项),或者是因为你使用显式的类型敏感条件(也许你的变量包含字符串下-尝试使===
到==
和!==
到==
,看看是否有变化)
else{ }
并将$return
设置为"oh noez"(或其他)。