상현
개발 덕후

포스트 배열 병합후 재정렬

( 업데이트: )

개별 get_posts()로 가져온 posts의 배열을 병합하게되면 순서가 변경되지 않으므로 직접 정렬해야합니다.

PHP >= 7

php의 usort를 사용하고 익명함수에서 “spaceship operator” <=> 를 사용하여 비교후 원하는 값을 도출해낼수 있습니다.

usort($my_posts, function($post_a, $post_b) {
    // 게시물의 post_date를 비교하고 $post_b가 최신이면 먼저 표시됩니다.
    return $post_b->post_date <=> $post_a->post_date;
});Code language: PHP (php)

일반적으로 return $a-value <=> $b->value; 결과를 오름차순으로 반환하는 데 사용하지만
필자는 날짜를 기순으로 최신 항목으로 정렬되기를 원하므로 비교를 반대로 했습니다.
return $b->value <=> $a->value;

이렇게 재정렬된 get_posts 객체의 배열을 얻을 수 있다.

PHP 5 😂

usort($my_posts, function ($a, $b) {
    if ($a->post_date < $b->post_date)       return -1;
    elseif ($a->post_date > $b->post_date)   return 1;
    else                                     return 0;
});Code language: PHP (php)