Usort в Opencart - PullRequest
       9

Usort в Opencart

0 голосов
/ 06 мая 2018

Я пытаюсь упорядочить такой массив в моей 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;
}

По какой-то причине это не работает, я хочу знать, что я делаю здесь неправильно, потому что это никак не меняет порядок массива.

Спасибо за ваше время! Бика

1 Ответ

0 голосов
/ 07 мая 2018

Я обнаружил, в чем проблема:

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);
    }

Спасибо, Бика

...