在PHP中的函数之间传递变量

时间:2013-05-12 09:24:39

标签: php

我正在慢慢地将我的工作模式转换为功能,以及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);,我希望显示错误。

但没有显示任何内容?我猜这是因为我在一个函数中创建了变量而没有进入另一个函数。

我的逻辑是什么?

为了记录,我想是一个老式的学校编码器,并且花时间从根本上一步一步地改变我的工作流程。

3 个答案:

答案 0 :(得分:3)

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

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

阅读globals

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

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

答案 1 :(得分:0)

这是一种错误的方法,使用它将函数中的echo切换回函数并回显函数,如下所示:

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;

}

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

答案 2 :(得分: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;
    }
}