0

我正在慢慢地将我的工作模式转换为函数以及 OOP。

我有一个文件,functions.php我在登录页面的顶部调用它。

提交页面上的表单时,我使用函数文件中的函数来检查输入的详细信息是否正确。如果不是,我会这样做

if ($how_many<1){

    $error .= "<p>You typed the wrong email address and/or password.</p>";
    return $error;

}

然后我anyerrors在同一个函数文件中命名了另一个函数。这是:

function anyerrors($error){
    echo $error;
}

更新:然后在我调用的文件anyerrors($error);中,我希望显示错误。

但是什么都没有显示?我猜这是因为我在一个函数中创建了变量,而它没有到达另一个函数。

我的逻辑有问题吗?

作为记录,我想我是一名老派编码员,我会花时间从根本上一次一步地改变我的工作流程。

4

3 回答 3

3

您的 $error 变量范围仅限于您声明的位置。它可以位于全局级别的文件中或函数内部。函数变量是原始数据类型,其生命周期仅在函数存在之前。因此,如果您在函数中声明 $error ,它将是一个新变量。如果要使用全局变量,则必须将其称为全局变量。

我个人会避免使用 global 但它会起作用..

阅读有关全局变量的信息

$error = "";

if ($how_many<1){

    $error .= "<p>You typed the wrong email address and/or password.</p>";
    return $error;

}

function anyerrors($error){
    global $error;
    echo $error;
}

我建议创建课程,这将使事情变得更容易。

于 2013-05-12T09:42:03.947 回答
0

这是一种错误的使用方式,将函数中的回声与返回和回声切换到这样的函数:

function anyerrors($error){
    return $error;
}



if ($how_many<1){

    $error .= "<p>You typed the wrong email address and/or password.</p>";
    echo anyerrors($error);

}

或者为了简单起见,您可以在创建错误后打印它

if ($how_many<1){

    $error .= "<p>You typed the wrong email address and/or password.</p>";
    echo $error;

}

上面的答案只是为了给你正确的方法来使用返回值的函数我希望我的回答可以帮助你,如果你对我的回答有其他问题,请随时在评论中提问:)

于 2013-05-12T09:27:39.760 回答
0

看起来乏味的代码应该是这样的

function checkForErrors($type)
    if ($type =='your type you want')
    {
        if ($how_many<1){

            $error .= "<p>You typed the wrong email address and/or password.</p>";
            return $error;
        }

    }
}
function anyerrors(){
    $errors = checkForErrors('your type you want');
    if($errors!="") {
          echo $errors;
    }
}
于 2013-05-12T09:28:41.250 回答