私はこれを理解できません。配列の配列を返す単純なクラスを作成しました。ここにクラスのコンストラクタがあります...アレイメンバーにアクセスできない
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
オブジェクト参照を反復処理することはできません。彼の答えでネットコーダーが言っているように、そうするためにTraversableを実装するべきです。あるいは、クラス内に$ commentArrayを与えるメソッドを実装するだけです。 – Andreas