Я не могу понять это. Я создал простой класс, который возвращает массив массивов. Вот класс contructor ...Не удается получить доступ к элементам массива
class BlogComments {
public $commentArray=array();
public $blogId;
function __construct($inId) {
if(!empty($inId)) {
$this->blogId=$inId;
$sql="select id,name,url,comment,email from blog_comment where blog_id=$inId";
$link2=GetConnection();
$query=mysql_query($sql,$link2) or die("Invalid blog id:".mysql_error());
while($row=mysql_fetch_array($query)) {
$this->commentArray=array(
"id"=>$row['id'],
"name"=>$row['name'],
"url"=>$row['url'],
"email"=>$row['email'],
"comment"=>$row['comment']
);
}
mysql_close($link2);
}
}
}
Я пытаюсь получить доступ к каждому члену массива через цикл. Он вводит цикл, но возвращаемые значения пустые. Я проверил, что данные записываются в массив. Вот мой код ...
include "include/commentclass.php";
$comments = new BlogComments($post->id);
foreach($comments as $comment) {
echo "<h4>".$comment->commentArray['name']."</h4>
<a href=\"".$comment->commentArray['url']."\">".$comment->commentArray['url']."</a>
<p>".$comment->commentArray['comment']."</p>";
}
В основном это возвращает пустые теги. Я также проверил, что $ post-> id имеет действительное значение. Любые идеи, что я делаю неправильно?
Спасибо за помощь, B
Вы не можете перебирать объект по ссылке Ссылка. Как говорит netcoder в своем ответе, вы должны реализовать Traversable, чтобы сделать это. Или просто реализуйте метод в своем классе, который даст вам $ commentArray. – Andreas