我的PHP函数认为我传递给它的变量($ type)是空的,但是当我告诉函数返回该变量($ ype)时,它会返回我粘贴的变量。
function getData($result, $player = 0, $type = 0){
// This is here for me to test the bug and it prints $type ok, how when its == 0 ?
if ($type == 0){ return $type; }
if (!empty($result) AND $type != 0){
return $result[$player]->$type;
}elseif (!empty($result) AND $type == 0){
return $result[$player];
}else{
return FALSE;
}
}
这就是我在代码中调用该函数的方法:
$map_type = getData($replay, 1, "name");
是否存在包含功能的文件的问题?我认为不,因为该文件中的其他文件甚至函数都可以正常工作。
我多次检查了一下,我没有在那里看到拼写错误,我实际上已经测试了它并且工作正常。
当没有将变量发送到函数时,是否存在将变量设置为0的错误?同样,我不这么认为,因为$ player的工作方式和类似的代码也适用于我的其他功能。
答案 0 :(得分:1)
松散类型的比较,例如if ($type == 0){
$type
是字符串值,可能会导致意外结果。
$type
将here进行比较。
因此,"13 Monkeys"
之类的字符串值将被展开为13
,而"13 Monkeys" == 0
将返回false
;但是没有任何前导数字的值(例如"name"
)将转换为0
,因此"name" == 0
为true
。
可以在PHP docs
中找到详细介绍所有不同类型比较(包括松散和严格比较)的有用页面。