我试图在我的opencart 3.0.2中订购这样的数组:
array(4) {
[0]=> array(3)
{
["name"]=> string(5) "Name1"
["download_id"]=> int(1)
["event_date"]=> string(10) "05/05/2018"
}
[1]=> array(3)
{
["name"]=> string(5) "Name2"
["download_id"]=> int(2)
["event_date"]=> string(10) "05/06/2018"
}
[2]=> array(3)
{
["name"]=> string(5) "Name3"
["download_id"]=> int(3)
["event_date"]=> string(10) "01/05/2018"
}
[3]=> array(3)
{
["name"]=> string(5) "Name4"
["download_id"]=> int(4)
["event_date"]=> string(10) "02/05/2018"
}
}
我使用USORT命令这个数组如下:
usort($download_teste['teste'], "sortByDate")
我的SortByDate函数就是这个:
function sortByDate($a, $b) {
$first = $this->formatDateDownloadForTest($a['event_date']);
$second = $this->formatDateDownloadForTest($b['event_date']);
if ($first == $second) {
return 0;
}
return ($first < $second) ? -1 : 1;
}
另外我使用这个函数formatDateDownloadForTest来获取日期并将原始日期(如d / m / Y)转换为字符串中的Ymd,因此日期05/05/2018将变为20180505,以便比较它们并正确返回。这个功能我测试过,没关系!
function formatDateDownloadForTest($date){
$insertedDate = explode("/", $date);
$insertedDate = $insertedDate[2].$insertedDate[1].$insertedDate[0];
return $insertedDate;
}
出于某种原因,它无法正常工作,我想知道我在这里做错了什么,因为它没有以任何方式改变数组顺序。
感谢您的时间! BICA
答案 0 :(得分:0)
我发现了什么问题:
usort($download_teste['teste'], array($this, "sortByDate"));
使用像这样的usort,传递它工作的函数的引用。所以基本上它没有找到usort应该使用的函数。
另外,将sortByDate函数更改为:
function sortByDate($a, $b) {
$first = $this->formatDateDownloadForTest($a['event_date']);
$second = $this->formatDateDownloadForTest($b['event_date']);
return ($first - $second);
}
谢谢你, BICA