Obtaining values from objects

时间:2011-11-20 作者:AlxVallejo

这段代码运行良好,为我的两篇文章中的每一篇返回两个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;}

2 个回复
最合适的回答,由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 所有物

SO网友:Johannes Pille

$CommentDates = array();
foreach ( $Comments as $Comment ) {
    $CommentDates[] = $Comment->comment_date;
}
将日期保存到数组中。

$CommentDates = \'\';
$length = count( $Comments );
for ( $i = 0, $i < $length, $++ ) {
    $CommentDates .= $Comment->comment_date;
    if ( ! $i == ( $length - 1 ) ) {
        $CommentDates .= \', \';
    }
}
将以您在问题中提出的格式创建字符串。

资源:

结束

相关推荐

与Loop不同,Get_Page()返回不带html标记的POST内容。我怎么才能解决这个问题?

get\\u page()不像循环那样返回没有html标记的帖子内容。我需要标签。我怎样才能解决这个问题?我不想更改所见即所得编辑器,这是一个糟糕的解决方案http://wordpress.org/support/topic/preserve-html-with-get_pages