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

时间:2015-02-25 21:26:27

标签: php function variables

我的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的工作方式和类似的代码也适用于我的其他功能。

1 个答案:

答案 0 :(得分:1)

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

根据定义的cast to a numeric规则,

$typehere进行比较。

因此,"13 Monkeys"之类的字符串值将被展开为13,而"13 Monkeys" == 0将返回false;但是没有任何前导数字的值(例如"name")将转换为0,因此"name" == 0true

可以在PHP docs

中找到详细介绍所有不同类型比较(包括松散和严格比较)的有用页面。