Array - 即使我已经定义了未定义的偏移量

时间:2014-10-16 16:21:52

标签: 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>'.$error[2].'</p>';

它应该可以工作,但它会不断显示错误:

Notice: Undefined offset: 0 
Notice: Undefined offset: 1
Notice: Undefined offset: 2

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

根据您更新的问题,它显示

$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_dumps

来检查条件逻辑

var_dump($_POST)并查找“电子邮件”索引。

也许“电子邮件”存在的条件不满意!

已编辑,正在显示以下内容......

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

foreach($error as $err) {
  echo '<p>'.$err.'</p>';
}

此外,您可以尝试使用代替include file.php,使用require('file.php')甚至require_once('file.php')

答案 1 :(得分:0)

除了你发生的事情,你应该做一个多维关联数组,所以错误是这样的类别:

$error['email'][] = 'error text';
$error['rparola'][] = 'error text';

让您的$error报告有条件:

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

答案 2 :(得分:0)

您的代码中有语法错误,这就是您遇到错误的原因。 我试着成为你的调试器,试一试。刚刚修改了你的代码。

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!'; }

//问题是这里索引3上的$ error [3]元素尚未分配。