函数认为传递的变量为空(不是!)


Function thinks passed variable is empty (it is not!)

我的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可以工作,类似的代码也可以用于我的其他函数。

松散类型的比较(如if ($type == 0){,其中$type是字符串值)可能会导致意外结果。

$type将根据此处定义的规则强制转换为数字进行比较。

因此,像"13 Monkeys"这样的字符串值将被松散地转换为13,而"13 Monkeys" == 0将返回false;但是诸如"name"之类的没有任何前导数字的值将被强制转换为0,因此"name" == 0true

PHP文档

中有一个有用的页面,详细介绍了所有不同类型的比较(宽松和严格比较)