foreach() error Warning: Invalid argument supplied for foreach()
i keep getting this error for an array of errors that i have set in a method
here is the code
public function showerrors() {
echo "<h3> ERRORS!!</h3>";
foreach ($this->errors as $key => $value)
{
echo $value;
}
}
i keep getting this "Warning: Invalid argument supplied for foreach()" when i run the program i set the errors array in the constructor like this
$this->errors = array();
so im not entirely sure why it wont print the errors!
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;
}
here is how i add data to the array itself! thanks for the help also!
alright i added this to the method
public function showerrors() {
echo "<h3> ERRORS!!</h3>";
echo "<p>" . var_dump($this->errors) . "</p>";
foreach ($this->errors as $key => $value)
{
echo $value;
}
then it outputs on my page this
ERRORS!! string(20) "invalid submission!!" if i type nothing into my text boxes so its saying its a string??
here is my constructor also, soory about this 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'];
}
在默认(没有填写)验证的情况下,您的表单中设置了"invalid submission"
消息,您省略括号[]
,导致$this->errors
被一个普通字符串覆盖,而不是附加到数组。
// Change
$this->errors = "invalid submission";
//...to...
$this->errors[] = "invalid submission";
链接地址: http://www.djcxy.com/p/53058.html
上一篇: foreach的参数无效