1

我遇到了一个问题,在运行 alertError() 时,它似乎没问题,并且可以访问 $errors,但是在运行 showErrors() 时,它告诉我该变量是欠精细的。“未定义的变量:错误”

$errors = array();

function alertError($error){
    $errors[] = $error;
    echo $errors[count($errors)-1];
}

function showErrors(){
        echo "<html>
                <head>
                    <title>Error occurred!</title>
                </head>
                <body>";
                foreach($errors as $error){
                    echo $error."<br>";
                }
        echo "
                </body>
             </html>";
    die();
}

为什么 alertError() 似乎知道 $errors 已定义,而 showErrors() 无法访问他?

4

3 回答 3

4

将错误传递给showErrors()

function showErrors($errors){
   ...
}

您可能需要这样的代码

$errors = alertError($error);
showErrors($errors);

function alertError($error){
    $errors[] = $error;
    echo $errors[count($errors)-1];
    return $errors;
}

function showErrors($errors){
        echo "<html>
                <head>
                    <title>Error occurred!</title>
                </head>
                <body>";
                foreach($errors as $error){
                    echo $error."<br>";
                }
        echo "
                </body>
             </html>";
    die();
}
于 2013-07-20T15:58:20.793 回答
2

当函数 'alertError()' 运行时,它对全局变量 $errors 一无所知。它每次都会创建新变量 $errors。所以它可以正常工作,但不是你想要的。在 showErrors 中没有声明这个变量,所以你会收到通知。您可以在每个函数中使用语句global $errors但这是一种不好的做法。

于 2013-07-20T15:59:42.867 回答
1

在 showErrors() 的第一行添加这一行

global $errors;

这将使您可以访问您在函数上方声明的全局 $errors

更新

正如在评论中提到的购买 Mr. Alien 和 Neil Neyman - 这是一种床上练习。如果您要为更复杂的系统编写一些 php - 您应该了解 OOP 概念,如他们的链接和评论中所示。

祝你好运 !

于 2013-07-20T15:55:11.030 回答