这段代码运行良好,为我的两篇文章中的每一篇返回两个StdClass对象:
$children = get_pages($args);
foreach ($children as $cake=>$element) {
$args = array(
\'post_id\' => $ID
);
$Comments = get_comments( $args );
};
这太棒了。我得到了每条评论的属性,但我只对评论日期感兴趣。我想要的输出是:
$CommentDates=(date1、date2等)——最终我想得到最近的评论日期。
我的下一步行动是:
foreach ($Comments as $CommentObject) {
$CommentDates = $CommentObject->comment_date;
}
这只返回一个日期,它恰好是第二个对象的值。
然而,如果我简单地重复这个foreach,我会得到两个日期。
foreach($Comments as$CommentObject){echo$CommentObject->comment\\u date;}
最合适的回答,由SO网友:Sampson 整理而成
您使用的问题foreach
(在这两种情况下)是指您正在擦除任何以前的值$Comments
或$CommentDates
在当前迭代之前。与其将值设置为变量本身,不如将新值作为数组附加到变量上:
// Not sure what purpose your $cake and $element serve here )
foreach( $children as $cake => $element ) {
$args = array( \'post_id\' => $ID ); // Assuming this $ID is declared elsewhere
$comments[] = get_comments( $args );
}
foreach( $comments as $commentObject ) {
$commentDates[] = $commentObject->comment_date;
}
当然,这两个
foreach
语句可以合并为一个
foreach
除非你的问题中没有详细说明会阻止这种情况发生。
这将导致两个阵列:$comments
包含每个迭代调用的所有结果get_comments()
, 和$commentsDates
将迭代结果包含到每个$commentObject
在其上comment_date
所有物