PHP - 我是否正确调用函数?

时间:2013-05-14 00:04:33

标签: php function

这是我的代码:

$oldPhone = $_POST["phone"];

$newPhone = makeInteger($oldPhone);

lengthMustBe($newPhone, 10, "Please enter a valid 10-digit phone number.");

这是功能:

function lengthMustBe($str, $length, $errormsg) {

    if (strlen($str) != $length) {
        $status = "failure";
        $error = $errormsg;
    }

};

这个功能非常自我解释..

当我尝试传递"123", 10, "Not long enough"时,$状态仍然是"成功" (在页面顶部定义。)

4 个答案:

答案 0 :(得分:2)

如何在页面顶部定义$ status?我的猜测是这个函数中$ status的范围使它成为与页面顶部定义的变量不同的变量。

答案 1 :(得分:2)

$status var的范围在函数lengthMustBe。

您可以将$status定义为全局变量,如下所示:

function lengthMustBe($str, $length, $errormsg) {
    global $status;
    // ...

答案 2 :(得分:2)

您需要设置$status变量,如:

$tmpArray = lengthMustBe($newPhone, 10, "Please enter a valid 10-digit phone number.");
$status = $tmpArray[0];
$statusMsg = $tmpArray[1];

和你的职能:

function lengthMustBe($str, $length, $errormsg) {

    if (strlen($str) != $length) {

        return array("failure", $errormsg);
    }
    else
    {
        return array("success", "");
    }
}

不要使用全局变量只是一个可怕的想法......

答案 3 :(得分:1)

我认为$ status不是全局的...意味着它只会在该函数中“失败”,但是当你尝试从其他地方调用它时,会调用全局$ status - 它被定义为“成功” “在页面顶部。

http://php.net/manual/en/language.variables.scope.php