PHP数组如何工作?

时间:2011-02-26 05:52:01

标签: php arrays

我认为我知道如何使用数组,直到我开始在其中存储填充错误。所以情况就是这样:我想在PHP文档的开头声明一个数组。然后在整个文档中进行验证,并且在每次验证时,如果应该产生错误,则数组将填充错误。然后在文档的最后我想将这些错误回显到页面上的特定错误。所以这就是我现在所拥有的:

$errors = array();//declares array

if(/*some qualifier*/) {//username validation
} else {
$errors[] = "<p>Please enter a valid username</p>";
}

if(/*some qualifier*/) {//email validation
} else {
$errors[] = "<p>Please enter a valid email</p>";
}

echo '<div id="errors">';//errors div

foreach ($errors as $value) {//fills error div with the errors LINE 60
    echo "$value<br />\n";
}

echo '</div>';

那么......那有什么问题?我一直收到一个错误,即错误是一个未定义的变量,当它试图回应错误时。

评论中给出的错误:

第160行的脚本“文件路径”发生错误:未定义的变量:错误

更新:在我的代码中看起来像是一个奇怪的问题。如果您想查看217行代码,请输入以下代码:http://pastebin.com/YkERYpeF

2 个答案:

答案 0 :(得分:2)

我见过你的代码。你只在条件中声明$ errors:

//if the user has registered
if (isset($_POST['submitted'])) {

require_once (MYSQL); //gets the database connection

$errors = array(); // declares the errors array that will be printed at end of validation if needed

PHP数组效果很好。您在条件范围中声明变量并在全局范围内使用它们。 PHP无法想象您想在全局范围内使用该变量。

您也应该缩进代码,但是您可以在$errors下面完美地定义$bodyId,PHP不会再抱怨了。

答案 1 :(得分:1)

你的一个验证块中的某些东西可能是出于自身目的而使用$ errors,某些函数在某处使用global $errors,或者其他东西以其他方式搞砸了。

我发现追踪这种事情的最快方法是在中间某处插入变量检查,并基本上对代码进行二进制搜索,直到找到变量重置的位置。