Php 数组-未定义的偏移量,即使我已经定义了它

Php 数组-未定义的偏移量,即使我已经定义了它,php,arrays,Php,Arrays,我有两个页面,第1页包含如下数组: $error=array(); $error[]='First value'; $error[]='Second value'; $error[]='Third value'; 第2页是我使用这些数组值的地方: include 'page1.php'; echo '<p>'.$error[0].'</p>'; echo '<p>'.$error[1].'</p>'; echo '<p>'.$

我有两个页面,第1页包含如下数组:

 $error=array();
 $error[]='First value';
 $error[]='Second value';
 $error[]='Third value';
第2页是我使用这些数组值的地方:

include 'page1.php';
echo '<p>'.$error[0].'</p>';
echo '<p>'.$error[1].'</p>';
echo '<p>'.$error[2].'</p>';

有什么想法吗?

从您更新的问题中,可以看出

$error=array();
if( !empty($_POST['email']) && isset($_POST['email']) ){
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $error[] = 'Emailul nu este valid!'; 
      }else{ $email=$_POST['email']; }
 }else{ $error[]='Utilizatorul este obligatoriu!'; }
在包含的文件中,您应该通过执行var_转储来检查条件逻辑

var\u dump($\u POST)
并查找“电子邮件”索引

也许“电子邮件”存在的条件没有得到满足

已编辑,在下面显示原文

通常,您会发现使用foreach循环不太容易出错

foreach($error as $err) {
  echo '<p>'.$err.'</p>';
}
foreach($error作为$err){
回音“”.$err.

”; }

此外,您可以尝试使用而不是
include file.php
,使用
require('file.php')
甚至
require_once('file.php')
根据您所做的,您可能应该执行多维关联数组,以便将错误分为以下几类:

$error['email'][] = 'error text';
$error['rparola'][] = 'error text';
使您的
$error
报告有条件:

if(isset($error['email'])) { do stuff }

您的代码中有语法错误,这就是为什么会出现该错误。 我试着做你的调试器,试试看。只是修改了你的代码

echo '<td><input type=text name=email placeholder=Email value=</td>';
if(!empty($_POST['email']))
    echo $_POST['email'];
echo '<td>'.$error[1].$error[2].'</td>';  //Problem is here 

$error=array();
if( !empty($_POST['email']) && isset($_POST['email']) ){
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $error[] = 'Emailul nu este valid!'; 
      }else{ $email=$_POST['email']; }
 }else{ $error[]='Utilizatorul este obligatoriu!'; }

echo'对我来说很好。。。执行var_dump()。另外,你喜欢用其他帐户投票表决这个问题吗?然后发布你的实际代码。我在你的问题中没有看到任何回音。你在范围中有另一个
$error
数组吗?呸!好了!我认为使用多维数组肯定会让你省去很多麻烦,然后你就可以找出真正给你带来错误的地方。您可能还需要研究的另一件事是通过jQuery进行表单验证。它有一个非常好且易于实现的表单验证库。如果是
foreach
帮助了你,那么你应该给@julianFresco一个正确的答案,这样其他找到这个答案的人就知道这是对你帮助最大的原因。其他开发人员也不会一直来解决您的问题。我不想在这里使用循环,我已经尝试了require和require_once@Petru那么为什么不显式地设置索引呢?如果不想使用foreach,那么为什么不使用$error[0]=“First value”$错误[1]=“第二个值”$错误[2]=“第三个值”;您使用的是框架吗?大多数框架都会使用一个名为$errors或$error的数组。您可以尝试将其作为调试测试。另外,您是否没有执行
var\u转储($error);死亡
就像其他评论者所问的那样?讽刺的是,当我提交表单时会出现错误,正如我的if语句所说的,如果字段为空,则会显示$error,但不是这个,而是我得到了偏移错误所有他的偏移都不起作用,而不仅仅是第三个。他的数组到达显示部分时为空。
echo '<td><input type=text name=email placeholder=Email value=</td>';
if(!empty($_POST['email']))
    echo $_POST['email'];
echo '<td>'.$error[1].$error[2].'</td>';  //Problem is here 

$error=array();
if( !empty($_POST['email']) && isset($_POST['email']) ){
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $error[] = 'Emailul nu este valid!'; 
      }else{ $email=$_POST['email']; }
 }else{ $error[]='Utilizatorul este obligatoriu!'; }