2015-08-09 7 views
-1

Как отсортировать массив, сохраняя ключевуюКак отсортировать массив

$arr = array(strong text 
    'a' => array('date' => time() - 1000), 
    'b' => array('date' => time() - 2000), 
    'c' => array('date' => time() - 3000), 
); 

Я хочу, чтобы сортировать по времени().

+0

Что вы хотите отсортировать по: –

+0

согласно времени() я хочу коротко – Yanks

ответ

0
function cmp($a, $b) 
{ 
    if($a["date"] == $b["date"]) return 0; 

    return($a["date"] > $b["date"]) ? 1 : -1; 
} 

usort($array, "cmp"); 
0

Существует несколько PHP функций, сортировки массивов - вы можете увидеть обзор здесь: http://php.net/manual/en/array.sorting.php

Как вы хотите, чтобы ни ключ, ни значение, но какой-то пользовательской логики вашей, что вам нужно для использования одной из функций, начиная с u. Ouf этих трех функций, 2 может использоваться для сортировки по значению: usort и uasort. Разница между ними заключается в том, что, в то время как первая не сохраняет ассоциации ключевых значений, вторая делает, что делает нулевую функцию uasort.

uasort принимает 2 параметра - массив для сортировки и обратного вызова, которые в течение 2 заданных элементов должен возвращать -1, 0 или 1, если первый элемент меньше, равна или больше, чем второй ,

В вашем случае, это будет работать:

print_r($arr); 

uasort($arr, function($e1, $e2) { 
    if ($e1['date'] == $e2['date']) { 
    return 0; 
    } 
    return ($e1['date'] < $e2['date']) ? -1 : 1; 
}); 

print_r($arr); 

Примечания: убедитесь, что вы не присвоить результат uasort вашего $ обр - возвращаемое значение этой функции не отсортированный массив , но булевское высказывание, если сортировка удалась.

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