Foreach多维数组格式化分组

时间:2017-01-11 19:50:44

标签: php arrays multidimensional-array foreach formatting

我已经创建了一个通过多维数组输出数据的函数,据我所知,所有数据都带有条件输出,现在仍然是我要格式化输出数据的问题。

以下是我想要的代码目标...请参阅图片使用纯HTML制作的内容:

Image: HTML Formating

现在我尝试通过从转发器字段中提取数据将其转换为PHP。这很好,但我想分组并形成它。

如下:

一旦月份名称和年份被释放,我想将他们的时间数据分成三组,这意味着最多三次包含在一个HTML中,然后是下一个直到出现一个新的月份部分,并且只有前一个元素才有一个分隔符“|”。

以下是代码:

function rp_all_info_termine() {
$termine = rp_get_all_termine();

$output          = '';
$i               = 0;
$is_same_month   = false;
$monthname       = '';
foreach ( $termine as $keys => $values ) {
    foreach ( $values as $key => $value ) {
        $get_date        = preg_replace( '/\s+/', '', $value[ 'title' ] );
        $get_monthname   = rp_get_month_name( $get_date );
        $get_year        = rp_get_year( $get_date );
        $get_time        = trim( $value[ 'description' ] );
        $get_weekday     = rp_get_weekday( $get_date );

        if ( rp_check_date( $get_date ) == '-1' || rp_check_date( $get_date ) == '0' ) {
            unset( $key );
            continue;
        }

        if ( $get_monthname != $monthname ) {
            $monthname   = '<h3>' . esc_html( $get_monthname );
            $year        = '&nbsp;' . esc_html( $get_year ) . '</h3>';
        } else {
            $monthname   = null;
            $year        = null;
        }

        $output  .= $monthname;
        $output  .= $year;
        $output  .= esc_html( $get_date );
        $output  .= esc_html( $get_weekday );
        $output  .= esc_html( $get_time ).'&nbsp;&nbsp;|&nbsp;&nbsp;';

        $monthname = $get_monthname;

        $i++;
    }
}
return $output;
}

以下是我的结果:

Image: PHP Loop Format

我的编辑:

感谢你的回答我已经做到了,但现在是分离器唯一未解决的问题......这就是我改变了:

    if ( $get_monthname != $monthname ) {
            $i   = 0;
            $monthname   = '<h3><strong>' . esc_html( $get_monthname );
            $year        = '&nbsp;' . esc_html( $get_year ) . '</strong></h3>';
        } else {
            $monthname   = null;
            $year        = null;
        }

        if ( $i == 3 ) {
            $output .= '<br>';
        }

使用分离器我试着解决的方法类似于此结果:

    if ( $i >= 1 ) {
            $output .= '&nbsp;|&nbsp;';
        }

enter image description here

但我想将分隔符放在三者的最后一个元素中:

enter image description here

0 个答案:

没有答案