2012-03-10 9 views
1

я постоянно получаю эту ошибку для массива ошибок, которые я установил в методеЕогеаспа() Предупреждение об ошибке: Недействительный аргумент для Еогеаспа()

здесь код

public function showerrors() { 
     echo "<h3> ERRORS!!</h3>"; 
     foreach ($this->errors as $key => $value) 
     { 
      echo $value; 
     } 
    } 

я храню получение этого «Warning: Invalid аргумента, поставляемый для Еогеаспа()», когда я запустить программу я установить массив ошибок в конструкторе, как этот

$this->errors = array(); 

так им не совсем уверен, почему это обыкновение распечатайте ошибки!

public function validdata() { 
     if (!isset($this->email)) { 
      $this->errors[] = "email address is empty and is a required field"; 
     } 

     if ($this->password1 !== $this->password2) { 
      $this->errors[] = "passwords are not equal "; 
     } 
     if (!isset($this->password1) || !isset($this->password2)) { 
      $this->errors[] = "password fields cannot be empty "; 
     } 
     if (!isset($this->firstname)) { 
      $this->errors[] = "firstname field is empty and is a required field"; 
     } 
     if (!isset($this->secondname)) { 
      $this->errors[] = "second name field is empty and is a required field"; 
     } 

     if (!isset($this->city)) { 
      $this->errors[] = "city field is empty and is a required field"; 
     } 


     return count($this->errors) ? 0 : 1; 
    } 

вот как я могу добавить данные в массив! спасибо за помощь тоже!

хорошо я добавил это к методу

public function showerrors() { 
     echo "<h3> ERRORS!!</h3>"; 
     echo "<p>" . var_dump($this->errors) . "</p>"; 
     foreach ($this->errors as $key => $value) 
     { 
      echo $value; 
     } 

затем выводит на моей странице этого

ОШИБКИ !! строка (20) "недопустимая подача !!" если я ничего не набираю в свои текстовые поля, поэтому он говорит о своей строке?

вот мой конструктор тоже, сориош об этом im new to php!

public function __construct() { 

     $this->submit = isset($_GET['submit'])? 1 : 0; 
     $this->errors = array(); 
     $this->firstname = $this->filter($_GET['firstname']); 
     $this->secondname = $this->filter($_GET['surname']); 
     $this->email = $this->filter($_GET['email']); 
     $this->password1 = $this->filter($_GET['password']); 
     $this->password2 = $this->filter($_GET['renter']); 
     $this->address1 = $this->filter($_GET['address1']); 
     $this->address2 = $this->filter($_GET['address2']); 

     $this->city = $this->filter($_GET['city']); 
     $this->country = $this->filter($_GET['country']); 
     $this->postcode = $this->filter($_GET['postcode']); 


     $this->token = $_GET['token']; 
    } 
+0

Опубликовать больше кода. Моя ставка заключается в том, что где-то вы пытаетесь добавить в '$ this-> errors', но случайно использовали' = 'вместо' [] = 'и закончили перезаписывать его скаляром ... –

+0

Общей ошибкой, которую я иногда сделайте сам, когда я набираю слишком быстро, это '$ this-> errors = 'foo';' вместо '$ this-> errors [] = 'foo';'. Что касается этого кода, это не проблема. – netcoder

+3

Проверьте с var_dump, что произошло перед foreach. –

ответ

1

По вашему умолчанию (ничего заполнена) проверки вашей формы, где сообщение "invalid submission" установлен, вы оставили вне скобок [], в результате чего $this->errors будут перезаписаны с простой строкой, а не добавление в массив.

// Change 
$this->errors = "invalid submission"; 

//...to... 
$this->errors[] = "invalid submission"; 
+0

спасибо Майкл! да, это действительно проблема! – eoin