2014-10-16 3 views
1

У меня есть две страницы, страница 1 содержит массив так:Array - Undefined смещение, даже если я уже определил его

$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 

Любая идея?

+1

Это прекрасно работает для меня ... Сделайте var_dump(). Кроме того, вам нравится голосовать по этому вопросу с помощью альтернативных учетных записей? –

+0

Вы не используете эхо (или подобное) для вывода этих данных? это просто проблема с выходным кодом, а не с массивом? –

+0

Я использую echo –

ответ

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) и искать индекс «электронную почту».

Возможно, условие, что 'email' существует, не удовлетворено!

EDITED, показывая оригинал ниже ...

Часто вы обнаружите, что она менее подвержена ошибкам использовать цикл Еогеасп.

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

Кроме того, вы можете попробовать использовать вместо include file.php, используя require('file.php') или даже require_once('file.php')

+0

Я не хочу использовать цикл здесь, и я уже пробовал с require и require_once –

+0

@Petru, то почему бы вам явно не указать свои индексы? –

+0

Что вы имеете в виду? –

0

Asside от того, что вы собираетесь, вы должны, возможно, сделать несколько мерных ассоциативный массив, поэтому ошибки в таких категориях, как так:

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

$error сделать ваши представления условно:

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

ironicaly, ошибка появляется, когда я отправляю форму, и, как говорит мой оператор if, если поле пустое, появляется ошибка $, но вместо этого я получаю ошибку смещения –

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

// Проблема была здесь, этот элемент $ error [3] в индексе 3 еще не был назначен.

+0

Все его смещения не работают, а не только в третьих. Его массив пуст, когда он добирается до его части дисплея. – Rasclatt

Смежные вопросы