如何安排数年的数据

时间:2015-01-12 05:56:29

标签: php codeigniter

数组包含以下方式的数据

$blog = array(
1 => array(
'blog_id' => 1,
'blog_year' => 2013),

2 => array(
'blog_id' => 2,
'blog_year' => 2013),

3 => array(
    'blog_id' => 3,
    'blog_year' => 2014),

4 => array(
    'blog_id' => 4,
    'blog_year' => 2014)
);

我想以下列格式显示这些数据。

2013: 博客1 博客2

2014: 博客3 博客4

请帮助我,我很多天都在解决这个问题。

1 个答案:

答案 0 :(得分:0)

你可以这样做。它应该主要按blog_year对多维数组进行排序,然后按blog_id进行排序。

<?php

$blog = array(
    2 => array(
        'blog_id' => 1,
        'blog_year' => 2013
    ),
    3 => array(
        'blog_id' => 4,
        'blog_year' => 2014
    ),
    1 => array(
        'blog_id' => 2,
        'blog_year' => 2013
    ),
    4 => array(
        'blog_id' => 3,
        'blog_year' => 2014
    )
);

usort($blog, function($a, $b) {
    if ($a['blog_id'] < $b['blog_id']) {
        return -1;
    } elseif  ($a['blog_id'] > $b['blog_id']) {
        return 1;
    } else {
        return strcmp($b['blog_year'], $a['blog_year']);
    }
});

$temp_year = '';
foreach($blog as $item){
    if($item['blog_year'] != $temp_year){
        echo ($temp_year != '') ? "\n":'';
        $temp_year = $item['blog_year'];
        echo $item['blog_year'] .':';
    }
    echo ' blog '. $item['blog_id'];
}

输出应为:

2013: blog 1 blog 2
2014: blog 3 blog 4