php сортировать и вывод данных по датам

237
26 января 2018, 23:44

Здравствуйте. Мне нужно отсортировать многомерный массив с выводом по значению. Не могу сгруппировать вложеные массивы по дате и вывести его с заголовком(дата), это должен быть цыкл или как? Пример массива данных

Array ( 
[0] => ( 
[ID] => 959 
[title] => title 
[post_date] => 2018-01-01 10:17:49 
    )
[1] => ( 
[ID] => 960 
[title] => title 
[post_date] => 2018-01-01 10:17:49 
    )
[2] => ( 
[ID] => 961 
[title] => title 
[post_date] => 2018-01-02 10:17:49 
    )
[3] => ( 
[ID] => 962 
[title] => title 
[post_date] => 2014-01-02 10:17:49 
    )
[4] => ( 
[ID] => 963 
[title] => title 
[post_date] => 2014-01-03 10:17:49 
    )      
)

Что в итоге хочеться получить

<h2> 2018-01-01 </h2>
id: 959 Title
id: 560 Title
<h2> 2018-01-02 </h2>
id: 961 Title
id: 562 Title
<h2> 2018-01-02 </h2>
id: 963 Title
.....

Спасибо за варианты.

Answer 1
usort($your_array, function($a, $b) {
    return $a['post_date'] - $b['post_date'];
});

print_r($your_array);
Answer 2
function date_compare($a, $b)
{
    $t1 = strtotime($a['post_date']);
    $t2 = strtotime($b['post_date']);
    return $t1 - $t2;
}
usort($your_array, 'date_compare');
$last_date = null;
$html = '';
foreach ($your_array as $array){
    if ($array['post_date'] != $last_date){
        $html .= '<b>' . $array['post_date'] . '</b><br>';
    }
    $html .= 'id: ' . $array['ID'] . ' ' . $array['title'] . '<br>';
    $last_date = $array['post_date'];
}
echo $html;
Answer 3

Вот тариант без функций сортировки

$test =array ( '0' => array( 'ID' => '959', 'title' => 'title','post_date' =>'2018-01-01 10:17:49'),
           '1' => array( 'ID' => '960' ,'title' => 'title','post_date' =>'2018-01-01 10:17:49'),
           '2' => array( 'ID' => '961', 'title' => 'title','post_date' =>'2018-01-02 10:17:49'),
           '3' => array( 'ID' => '962', 'title' => 'title','post_date' =>'2014-01-02 10:17:49'),
           '4' => array( 'ID' => '963', 'title' => 'title','post_date' =>'2014-01-03 10:17:49')      
);
foreach($test as $arItem){
    $date =  date("d.m.Y", strtotime($arItem["post_date"]));
    $arResult[$date][$arItem["ID"]] = $arItem;
}
foreach($arResult as $key => $arItemDate){
    echo "<h2>".$key."</h2>";
    foreach($arItemDate as $arItem){
        echo "id: ".$arItem["ID"]." ".$arItem["title"]."<br/>";
    }
}
READ ALSO
Редирект 301 в php коде с html/ на html без слеш

Редирект 301 в php коде с html/ на html без слеш

Есть код в котором генериться ссылкаhtml, но она также доступна как ссылка

188
Синтаксис С++ (pair)

Синтаксис С++ (pair)

Маленький вопрос: как можно объявить двумерный pair-массив n на n?

231
использование vector с библиотекой boost

использование vector с библиотекой boost

Ребят пытаюсь подключить библиотеку boost и использовать вместе с векторомВыглядит примерно так:

195
Перегрузить операцию ввода для типа vector

Перегрузить операцию ввода для типа vector

Подскажите как правильно нужно перегрузить операцию ввода для записи в файл

189