我有一个网站抓住Confluence博客帖子数据。使用的API似乎没有排序功能。任何人都可以帮助我按照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();
答案 0 :(得分:1)
在 foreach 循环之前,您可以像这样使用usort
usort($results, function ($a, $b) {
return strtotime($a->history->createdDate) - strtotime($b->history-> createdDate);
});
完成后, $ result 将按排序顺序生成数据 $ a- $ b 将以升序顺序为您提供数据 $ b- $ a 会以降序顺序为您提供数据
答案 1 :(得分: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');
就在每个循环之前