PHP-调用函数是否正确?

PHP-调用函数是否正确?,php,function,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) {

这是我的密码:

$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;
    }

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

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

        return array("failure", $errormsg);
    }
    else
    {
        return array("success", "");
    }
}
这个函数很容易解释


当我试图传递它时,$status仍然是“success”(在页面顶部定义)。

如何在页面顶部定义$status?我猜$status在这个函数中的作用域使它与在页面顶部定义的变量不同。

如何在页面顶部定义$status?我的猜测是$status在这个函数中的作用域使得它与页面顶部定义的变量不同。

我认为$status不是全局变量。。。这意味着在该函数中只会出现“失败”,但当您尝试从其他位置调用它时,会调用全局$status,它在页面顶部被定义为“成功”


我认为$status不是全球性的。。。这意味着在该函数中只会出现“失败”,但当您尝试从其他位置调用它时,会调用全局$status,它在页面顶部被定义为“成功”


变量的作用域在函数长度必须的范围内

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

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

$status
var的范围在函数lengthMustBe内

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

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

您需要设置
$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) {
        $status = "failure";
        $error = $errormsg;
    }

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

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

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

不要使用globals这只是一个糟糕的想法…

您需要设置
$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) {
        $status = "failure";
        $error = $errormsg;
    }

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

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

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

不要使用globals,这只是一个糟糕的想法…

删除;在函数结束时,您需要在所有代码之上定义函数。如何检查
$status
值?删除;在函数结束时,您需要在所有代码之上定义函数。如何检查
$status
值?是的,我知道如何返回“failure”,但我还需要返回错误消息。。。我该怎么做?@RickBross-检查更新的答案。。您只需返回状态和消息的数组。您可以将“failure”和“success”字符串更改为布尔值,如true或false。是的,我知道如何返回“failure”,但我还需要返回错误消息。。。我该怎么做?@RickBross-检查更新的答案。。您只需返回状态和消息的数组。您可以将“failure”和“success”字符串更改为布尔值,如true或false。