2015-01-06 3 views
0

Я знаю, что этот вопрос задан сто раз, и я прошел несколько ответов и не получил правильных результатов.Заказать массив PHP по поддиапазону по дате

Я пытаюсь заказать следующую строку по дате, сначала старые:

Array(
[0] => Array 
    (
     [0] => '3173' 
     [1] => 'Contact - 12-6-14 Outstanding invoice' 
     [2] => '16/06/2014' 
     [3] => '204' 
    ) 

[1] => Array 
    (
     [0] => '3167' 
     [1] => 'Contact - Outstanding invoice' 
     [2] => '13/06/2014' 
     [3] => '207' 
    ) 

[2] => Array 
    (
     [0] => '3497' 
     [1] => 'New Site - Keri Keri' 
     [2] => '25/11/2014' 
     [3] => '43' 
    ) 

[3] => Array 
    (
     [0] => '2023' 
     [1] => 'Analysis' 
     [2] => '17/06/2014' 
     [3] => '355' 
    ) 

[4] => Array 
    (
     [0] => '2641' 
     [1] => 'PSS' 
     [2] => '20/02/2014' 
     [3] => '321' 
    ) 

)

Я пробовал такие вещи, как ниже, не повезло.

function cmp($a, $b){ 
     return $b[2] - $a[2]; 
    } 

usort($urgent_array, "cmp"); 

Любая помощь на этом будет очень признателен :)

ответ

0

Во-первых, вы хотите сравнить, а не вычитать:

function cmp($a, $b) { 
    if ($a[2] == $b[2]) 
     return 0; 
    return ($a[2] > $b[2]) ? 1 : -1; 
} 

usort($urgent_array, "cmp"); 

Тогда, дата заказа работает лучше всего, если вы используете Y-m-d формат:

2014-06-13 т.д.

+0

по электронной почте Ой моя ошибка ввода 2, это было 3. не работает, хотя, массив просто приходит обратно пустой –

+0

@ SeánMcCabe насчет других изменений - с помощью операторов сравнения, как '' <' and '> вместо вычитания и ввода в год первый ? – mopo922

+0

Мой плохой, не сохранил изменения должным образом. Просто нужно было поменять условия возврата, так что это было $ b [2] <$ a [2] спасибо :) –

0

Изменить лет Ур сравнить функцию с

function cmp($a, $b){ 
    $a_date = strtotime(str_replace('/', '-', $a[2])); 
    $b_date = strtotime(str_replace('/', '-', $b[2])); 

    return $a_date - $b_date; 
} 

Вы хотите использовать strtotime, потому что вычитание строк на самом деле ничего не значит. Str_replace - это потому, что PHP ожидает тире для формата dd-mm-yyyy.

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