我有一个名为$comments
的数组。
当我var_dump($comments);
这是结果。
array
0 =>
object(stdClass)[11]
public 'comment_id' => string '1' (length=1)
public 'comment_article_id' => string '1' (length=1)
public 'comment_user_id' => string '2' (length=1)
public 'comment' => string 'Comment to article_id 1' (length=11)
public 'comment_date' => string '2016-03-10 20:06:43' (length=19)
1 =>
object(stdClass)[9]
public 'comment_id' => string '3' (length=1)
public 'comment_article_id' => string '1' (length=1)
public 'comment_user_id' => string '2' (length=1)
public 'comment' => string 'Another comment to article_id 1.' (length=14)
public 'c
' => string '2016-03-10 20:06:43' (length=19)
2 =>
object(stdClass)[6]
public 'comment_id' => string '5' (length=1)
public 'comment_article_id' => string '2' (length=1)
public 'comment_user_id' => string '2' (length=1)
public 'comment' => string 'Comment to article_id 2' (length=26)
public 'comment_date' => string '2016-03-10 20:06:43' (length=19)
这是我的功能,它给了我上面的结果:
public function ListComments($userid) {
$comments = $this->FindComments($userid);
var_dump($comments);
}
我想列出这样的评论:
- 1(即comment_article_id)
-Comment to article_id 1
- 对article_id 1的另一个评论。
- 2
-Comment to article_id 2
我不知道如何使用当前数组来获得这样的结果。
我希望在FindComments()
函数没有任何更改的情况下归档此内容。
我必须做我在ListComments()
函数中所做的一切。
可能我需要一个foreach循环,但我没有申请。
答案 0 :(得分:2)
要通过操作已经收到的注释数组来实现这一点,您只需要循环它并将所有元素放在bidimensional关联数组中,其中键是文章ID
$results
然后按照你想要的方式输出它只需要通过echo '<ul>';
foreach ($results as $key => $comments) {
echo '<li>' . $key . '</li>';
echo '<ul>';
foreach($comments as $comment) {
echo '<li>' . $comment->comment . '</li>';
}
echo '</ul>';
}
echo '</ul>';
数组和所有注释来打印内容。
请注意,我认为回应html是一种不好的做法。这是公正的 快速向您展示如何实现您想要的输出。
$data = array(
array(
'id' => '609',
'datetime' => 'stop'
),
array(
'id' => '610',
'datetime' => 'stop'
),
array(
'id' => '611',
'datetime' => '2016/03/28 13:00:56'
),
array(
'id' => '612',
'datetime' => '2016/04/03 01:00:00'
)
);
echo(json_encode($data));
答案 1 :(得分:2)
您可以这样做,首先使用该文章ID键入索引:
// create temporary associative array, keyed by comment_article_id
$comments2 = [];
foreach($comments as $comment) {
$comments2[$comment->comment_article_id][] = $comment;
}
// now output via that new array:
foreach ($comments2 as $key => $arr) {
echo "comment article ID: $key\n";
foreach ($arr as $comment) {
echo "comment: " . $comment->comment . "\n";
}
}