2016-10-24 275 views
0

我有一个网站抓取合流博文数据。使用的API似乎没有排序功能。谁能帮我把PHP由JSON日期排序页面上的帖子,我需要最新的第一。谢谢!排序JSON日期按日期 - PHP

<?php 
require_once($_SERVER["DOCUMENT_ROOT"].'/layout/layout.inc.php'); 
require_once($_SERVER["DOCUMENT_ROOT"].'/functions/general.inc.php'); 

$layout = new my_layout(); 

$layout->title('IT KB Search'); 

$layout->content("<div class='border'>"); 
$layout->content('<h1>IT Support Knowledge Base - Search Results</h1>'); 

    $baseUrl = 'https://website.atlassian.net/wiki'; 
    $url = $baseUrl.'/rest/api/content?spaceKey=KB&type=blogpost&start=0&limit=10&expand=space,history,body.view,metadata.labels'; 

    // To enable authenticated search: 
    // $url .= "&os_username=$username&os_password=$password"; 

    $response = file_get_contents($url); 
    $response = json_decode($response); 
    $results = $response->results; 

    $html .= '<dl style=list-style: none;>'; 
    foreach($results as $item) { 
     $date = $item-> history-> createdDate; 
     $html .= '<strong><a href="'; 
     $html .= $baseUrl. $item-> _links-> webui; 
     $html .= '" target="_blank">'; 
     $html .= $item->title; 
     $html .= ' - '; 
     $html .= date("d/m/Y",strtotime($date)); 
     $html .= '</a></strong><br>'; 
     $html .= $item->body-> view-> value; 
     $html .= '<br>'; 
    } 
    $html .= '</dl>'; 

    $layout->content($html); 

$layout->content('</div>'); 
$layout->render(); 

回答

1

之前的foreach循环,你ç这样

usort($results, function ($a, $b) { 
    return strtotime($a->history->createdDate) - strtotime($b->history-> createdDate); 
}); 

的使用usort一旦完成,$结果将在有序$ A- $数据B会给你上升秩序和$ B- $ a将会数据给你数据降序为了

+0

非常感谢! :D – Mooticus

+0

您的欢迎:) – Haridarshan

0

你可以尝试这样的: -

function date_compare($a, $b) 
{ 
    $t1 = strtotime($a['datetime']); 
    $t2 = strtotime($b['datetime']); 
    return $t1 - $t2; 
}  
usort($results, 'date_compare'); 

你可以在你的PHP文件中声明功能date_compare和使用语句: -

usort($results, 'date_compare'); 

之前的每个循环

+0

很抱歉,如果这是一个noob问题,但我怎么将此主题融入我的代码,因此A和b是我的数据? – Mooticus