2016-02-08 3 views
-1
Array ([0] => stdClass Object ( [Id] => 18 
           [AccNo] => 1 
           [Title] => Hardware 
           [Description] => Mobile. 
           [ManuDate] => 8th July 1942 
           [MusCat] => Album 
           [month] => 7 
           [date] => 8) 
    [1] => stdClass Object ( [Id] => 20 
           [AccNo] => 2 
           [Title] => Food 
           [Description] => Apple. 
           [ManuDate] => 27th July 1942 
           [MusCat] => Album 
           [month] => 7 
           [date] => 27) 
    [2] => stdClass Object ( [Id] => 24 
           [AccNo] => 3 
           [Title] => Hardware 
           [Description] => Computer. 
           [ManuDate] => 2nd July 1942 
           [MusCat] => Album 
           [month] => 7 
           [date] => 2) 
    [3] => stdClass Object ( [Id] => 56 
           [AccNo] => 4 
           [Title] => Hardware 
           [Description] => Printer 
           [ManuDate] => 1942 
           [MusCat] => Album 
           [month] => 
           [date] => 0) 
     [4] => stdClass Object ([Id] => 105 
           [AccNo] => 5 
           [Title] => Object 
           [Description] => Chair. 
           [ManuDate] => 1942 
           [MusCat] => Album 
           [month] => 
           [date] => 0)) 

Это мой вклад массива какКак отсортировать мультики в php?

Id Date    Title    Description 

0 8th July 1942  Hardware  Mobile 
    1 27th August 1942 Food   Apple 
    2 2nd July 1942  Hardware  Computer 
    3 1942    Hardware  Printer 
    4 1942    Object   Chair 

Я хочу выход как

Id Date    Title    Description 
************************************************************ 
3 1942    Hardware    Printer 
4 1942    Object    Chair 
2 2nd July 1942  Hardware    Computer 
0 8th July 1942  Hardware    Mobile 
1 27th August 1942 Food     Apple 

Как сортировать ключи в PHP? Я новичок в Php. Я использую следующий код в php, но вывод не будет корректным. Если какой-либо из датских или месячных сортировок, выход будет выполнен правильно. в противном случае оба (по дате или месяцу), вывод не будет выполнен правильно. Plz поможет любое решение.

usort($value['year'], function ($a, $b) { 
    if ($a->date == $b->date) return 0;      
    return $a->date < $b->date ? -1 : 1; 
});  

usort($value['year'], function ($a, $b) { 
    if ($a->month == $b->month) return 0; 
    return $a->month < $b->month ? -1 : 1; 
}); 
+0

Вместо того чтобы сортировать его в PHP вы можете просто использовать 'порядок by' пункта в запросе MySQL – Ali

+0

год не похоже, поле даты в БД, не было бы проще установить как поле Дата, а затем' порядок by' в mysql? Если вы хотите, чтобы сделать это в php year, это недействительно datetime, поэтому вам нужно будет проверить, является ли это поле годом и преобразовать его на дату, а затем сравнить. – Robert

+0

Дата должна иметь год или дату. Я должен сортировать месяц мудрым, а также день мудрым. Невозможно сортировать по дате в запросе –

ответ

1

Следующий код выполняет эту работу. strtotime анализирует дату даты в отметке времени Unix.

usort($array, function($v1, $v2) { 
    $d1 = strlen($v1->ManuDate) === 4 ? '01-01-' . $v1->ManuDate : $v1->ManuDate; 
    $d2 = strlen($v2->ManuDate) === 4 ? '01-01-' . $v2->ManuDate : $v2->ManuDate; 
    return strtotime($d1) - strtotime($d2); 
}); 
+0

Спасибо за ссылку. Я получил решение. Я преобразовал manudate как формат даты, как 1942-07-02 или 1942-01-01 или 1942-08-27.Добавить tempyear атрибут ключа & используется следующая функция функция date_compare ($ а, $ б) \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t { \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t $ t1 = strtotime ($ a-> tempYear); \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t $ t2 = StrToTime ($ b-> tempYear); \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t возвращение $ t1 - t2 $; \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t} \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t usort (#array, 'date_compare'); –

Смежные вопросы