[英]loop through an associative array using OOP PHP
<?php
class Validate
{
public $errors = array();
public function date($date)
{
if(!strtotime($date))
{
$errors['date'] = "$date is not a valid date.";
//var_dump($errors);
} else {
return $date;
}
}
public function get_errors()
{
foreach($this->errors as $error => $val)
{
return $val."<br />\n";
}
}
}
$validate = new Validate;
$validate->date('<20 Feb, 2013');
print $validate->get_errors();
它應該遍歷$errors
它們打印到瀏覽器中。 沒有。 我肯定知道$errors
數組是通過以下語句初始化的:
var_dump($errors);
印刷:
array(1) { ["date"]=> string(34) "<20 Feb, 2013 is not a valid date." }
到屏幕。 我想念什么?
我嘗試過各種形式的foreach構造:
foreach($this->errors as $this->error => $val)
{
return $val."<br />\n";
}
和
foreach($this->errors as $this->error => $this->val)
{
return $this->val."<br />\n";
}
但是沒有喜悅!
首先,您必須將錯誤消息分配給$this->error
而不是$error
:
public function date($date) {
if(!strtotime($date)) {
$this->errors['date'] = "$date is not a valid date.";
} else {
return $date;
}
}
其次,您將從錯誤數組中返回第一個錯誤( return $val."<br />\\n";
)。 您可以使用array_value
函數從數組中獲取所有值:
public function get_errors() {
return implode('<br />', array_values($this->errors));
}
// ...
print $validate->get_errors();
一個函數只能返回一次。 您無法循環並返回整個數組,因此最好一次返回整個數組:
public function get_errors()
{
return $this->errors;
}
然后將其完全輸出到其他地方:
foreach($validate->get_errors() as $error => $val) {
echo $val . "<br />"; // echo is the output command
}
或對其進行調試:
var_dump($validate->get_errors());
你也可以說
public function get_errors() {
return implode('<br>', $this->errors);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.