在Opencart中使用

时间:2018-05-06 07:51:48

标签: php usort opencart-3

我试图在我的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

1 个答案:

答案 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