我无法弄清楚这一点。我创建了一个返回数组数组的简单类。这是类构造函数......
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-&gt; id保存有效值。我有什么想法吗?
感谢您的帮助, 乙
答案 0 :(得分:1)
你正在做一些错误,首先是一个netcoder指出:你使用对象作为数组而没有实现Iterator
接口。第二个是您将结果数组直接分配给$this->commentArray
。您应该以这种方式将结果附加到数组:$this->commentArray[] = array(
答案 1 :(得分:0)
试试这个:
$comments = new BlogComments($post->id);
foreach ($comments->commentArray as $comment) {
echo "<h4>".$comment['name']."</h4>
<a href=\"".$comment['url']."\">".$comment['url']."</a>
<p>".$comment['comment']."</p>";
}
new
关键字返回单个对象。除非您的对象(BlogComments
)实现Traversable
,否则foreach
将对公共属性commentArray
和blogId
起作用,而不会对commentArray
内容起作用
您也可以让您的班级实现Iterator
界面。