タイトルがわかりにくい場合は申し訳ありませんが、すべてのコメントとその返信を再帰関数で取得しようとしています。問題は、最上位のコメント オブジェクトがコメントとは異なるデータ構造を持っていることです。最上位のコメントは からアクセスされ$comment_object->data->children
、すべてのコメントへの返信は からアクセスされ$comment->data->replies
ます。これは私がこれまでに持っているものです:
public function get_top_comments()
{
$comments_object = json_decode(file_get_contents("http://www.reddit.com/comments/$this->id.json"));
sleep(2); // after every page request
$top_comments = array();
foreach ($comments_object[1]->data->children as $comment)
{
$c = new Comment($comment->data);
$top_comments[] = $c;
}
return $top_comments;
}
public function get_comments($comments = $this->get_top_comments) //<-- doesn't work
{
//var_dump($comments);
foreach ($comments as $comment)
{
if ($comment->data->replies != '')
{
//Recursive call
}
}
}
再帰関数のデフォルトのパラメータとして割り当てようとしまし$comments = $this->get_top_comments
たが、PHP はこれをサポートしていないのでしょうか? 異なる構造を分離するために、関数内で if-else ブロックを使用する必要がありますか?