2013-05-28 3 views
-1

У меня есть массив массивов. Я хочу заказать эти массивы по полю ['date']. Таким образом, последнее относится к индексу [0]. Как я могу это сделать?Как заказать массив по внутреннему значению ключа массива?

Вот пример моего print_r

$array= (
    [0] => Array 
     (
      [date] => 01/05/2013 12:00 
      [location] => Town Hall 
      [minutes] => mydomain.com 
      [agenda] => 
     ), 
[1] => Array 
     (
      [date] => 09/05/2013 12:00 
      [location] => Town Hall 
      [minutes] => mydomain.com/walker 
      [agenda] => 
     ) 

) 
+0

вам нужно http://www.php.net/manual/en/function.array-multisort.php – Twisted1919

+0

Также связаны и, возможно, легче понять: [PHP, сортировать массив объектов по полям объекта] (http://stackoverflow.com/q/4282413/218196). –

ответ

1

просто попробуйте это -

$array = array(
    0 => array('date'=>'01/05/2013 12:00', 'location'=>'A'), 
    1 => array('date'=>'09/05/2013 12:00', 'location'=>'B'), 
    2 => array('date'=>'03/05/2013 12:00', 'location'=>'C'), 
    3 => array('date'=>'02/05/2013 12:00', 'location'=>'D') 
); 

echo '<pre>'; 
print_r($array); 
echo '</pre>'; 

function sorting($a, $b){ 
    $a = strtotime($a['date']); 
    $b = strtotime($b['date']); 

    if ($a == $b) { 
     return 0; 
    } 
    return ($a < $b) ? -1 : 1; 
} 

usort($array, "sorting"); 

echo '<pre>'; 
print_r($array); 
echo '</pre>'; 

посмотреть демо - http://codepad.org/biXJgHQA

+0

Работает как шарм, спасибо. – Nicola

+0

:) мое удовольствие. Вы наиболее Nicola – HADI

+0

Связанный вопрос, было бы лучше сохранить его как другой формат, если я хочу, чтобы проверить дату первого массива, чтобы увидеть, если это в будущем? – Nicola

0

Попробуйте это:

usort($array,function($a,$b){ 
    return strcmp($a['date'],$b['date']); 
} 

или если PHP < 5,3

function my_sort($a,$b){ 
    return strcmp($a['date'],$b['date']); 
} 
usort($array,'my_sort'); 
+1

и что, если php <5.3? – Twisted1919

+0

'function my_sort ($ a, $ b) {return strcmp ($ a ['date'], $ b ['date']); } usort ($ array, 'my_sort'); ' – StampyCode

+0

@TimStamp лучше обновить ответ, а не помещать его в комментарий. –

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