PHP数组是如何工作的?

PHP数组是如何工作的?,php,arrays,Php,Arrays,我以为我知道如何使用数组,直到我开始在数组中存储表单填充错误。现在的情况是:我想在PHP文档的开头声明一个数组。然后在整个文档中进行验证,在每次验证时,如果应该产生错误,则数组将填充一个错误。然后在文档的末尾,我想将这些错误回传到页面上的特定位置。这就是我现在拥有的: $errors = array();//declares array if(/*some qualifier*/) {//username validation } else { $errors[] = "<p>Pl

我以为我知道如何使用数组,直到我开始在数组中存储表单填充错误。现在的情况是:我想在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>';
$errors=array()//声明数组
如果(/*某些限定符*/){//用户名验证
}否则{
$errors[]=“请输入有效的用户名”

”; } 如果(/*某些限定符*/){//电子邮件验证 }否则{ $errors[]=“请输入有效的电子邮件”

”; } 回声'//错误处 foreach($errors as$value){//用errors行60填充error div 回显“$value
\n”; } 回声';
所以。。。这有什么不对?我不断得到一个错误,错误是一个未定义的变量,当它试图回显错误

注释中给出的错误:

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


更新:我的代码中似乎有一些奇怪的问题。如果您想查看217行代码,这里是所有代码:

您的验证块中有一些东西可能出于自身目的使用了$errors,其中某个调用的函数使用了
全局$errors
,或者有什么东西以其他方式把它搞砸了


<>我发现最快的方法是在中间的某个地方插入一个变量,基本上对代码进行二进制搜索,直到你找到变量正在被重置的位置。

在你的一个验证块中有一些东西是用$错误来实现它自己的目的,在那里调用的某个函数使用了
全局$errors
,或者有什么东西以其他方式把它搞砸了


<>我发现最快的方法是在中间的某个地方插入一个变量,基本上对代码进行二进制搜索,直到找到变量正在被重置的位置。

< p>我已经看到了你的代码。您只在条件中声明了$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无法想象您希望在全局范围内使用该变量


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

我看过你的代码。您只在条件中声明了$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无法想象您希望在全局范围内使用该变量


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

是否可能显示的某些代码在函数内部?那个么$errors将是一个正确范围的问题。我找不到您的代码有任何错误。它对我来说运行得非常好,将
if()
语句评估为
true
false
。你确定没有遗漏什么?什么错误?请提供错误信息。@xzyfer错误是:脚本“文件路径”第160行出现错误:未定义变量:错误第160行是foreach所在的位置。@chromedude,essential这意味着您有范围问题。这意味着
$errors
变量在您尝试循环它的点上不存在。如果代码缩进正确,
$errors
的缩进程度应小于或等于
foreach
循环,并且在相同的函数中。否则,发布一个250行的压缩代码示例,其中显示了所有相关的代码,这样我们就可以自己查看显示的部分代码是否可能在函数内部?那个么$errors将是一个正确范围的问题。我找不到您的代码有任何错误。它对我来说运行得非常好,将
if()
语句评估为
true
false
。你确定没有遗漏什么?什么错误?请提供错误信息。@xzyfer错误是:脚本“文件路径”第160行出现错误:未定义变量:错误第160行是foreach所在的位置。@chromedude,essential这意味着您有范围问题。这意味着
$errors
变量在您尝试循环它的点上不存在。如果代码缩进正确,
$errors
的缩进程度应小于或等于
foreach
循环,并且在相同的函数中。否则,发布一个250行的压缩代码示例,显示所有相关代码,这样我们就可以查看我们的selvesthanks了!是的,我真的应该缩进,真是太痛苦了:(谢谢!是的,我真的应该缩进,真是太痛苦了:(