3

В настоящее время у меня есть некоторые многомерные массивы, которые выглядят как этотСортировка Многомерные массивы с Uasort

Array ( 
    [71] => Array ([author] => 2 [date] => 1392867376) 
    [49] => Array ([author] => 2 [date] => 1392868188) 
    [75] => Array ([author] => 14 [date] => 1392867388) 
    [67] => Array ([author] => 2 [date] => 1392870805) 
) 

Я хотел бы, чтобы отсортировать их по «дата», но я понятия не имею, как это сделать. Я попытался это:

function cmp($a, $b) { 
    if ($a == $b) { 
     return 0; 
    } 
    return ($a < $b) ? -1 : 1; 
} 
uasort($visited, 'cmp'); 

Но так как я понятия не имею, и не мог найти ссылку о том, как использовать «функцию сравнения» Я в космосе. Все, что мне удалось найти, было очень расплывчатым. В настоящее время это сортирует «автор».

Может кто-то любезно объяснить мне, как работают эти функции сравнения (или указать мне на онлайн-ресурс) и рассказать мне, что мне нужно сделать, чтобы отсортировать этот массив по «дате» - при сохранении всех ключей нетто (ключи должны не должны быть изменены или стерты)

Большое спасибо за предоставленную помощь.

PS: Я попробовал array_multisort - он удалил мои ключи.

+0

Вы можете использовать функцию array_multi_sort() это будет полезно – Sundar

+0

возможно дубликат [Как отсортировать многомерный массив в PHP] (HTTP: // StackOverflow. com/questions/96759/how-do-i-sort-a-multidimensional-array-in-php) –

+0

@Sundar Я попытался и не смог заставить его работать. Как бы вы работали в динамической ситуации, когда основными ключами являются все случайные числа, например, мой пример выше? Единственный, кто работал без фактического использования моих ключей, был uasort. Отсюда мой вопрос. Благодарю. –

ответ

5

попробовать эту функцию: КСС

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

Он должен работать.

+0

HA! Это сделал трюк - Большое спасибо! –

+0

Добро пожаловать. – Maximus

0

дата Массив сортируется в порядке возрастания

<?php 
$a = array(); 
$a[71] = Array ('author' => 2, 'date' => 1392867376); 
$a[49] = Array ('author' => 14, 'date' => 1392868188) ; 
$a[75] = Array ('author' => 2, 'date' => 1392867388) ; 
$a[67] = Array ('author' => 2, 'date' => 1392870805) ; 

$date = array(); 

// Obtain a list of columns 
foreach ($a as $key => $row) { 
    $date[$key] = $row['date'];  
} 

//sort the array date ascending order 
array_multisort($date, SORT_ASC, $a); 

//array is sorted in ascending order 
print_r($a); 
Смежные вопросы