2016-03-26 2 views
-1

У меня есть следующий массив, и я хочу отсортировать этот массив в порядке убывания на основе значения индекса count в php. Я использовал следующий код, но он не работает для меня. пожалуйста, дайте мне подсказку для сортировки массива в порядке убывания.как отсортировать два размера массива в нисходящем массиве в php?

Массив: -

Array ([0] => Array ([text] => this is text [count] => 0) 
     [1] => Array ([text] => this is second text [count] => 2) 
     [2] => Array ([text] => this is third text [count] => 1) 
    ) 

Я попытался следующий код.

function sort_count($a, $b) { 
    return $a['count'] - $b['count']; 
} 
$sorted_array = usort($array, 'sort_count'); 
+2

У этого уже есть решение здесь: http://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value –

ответ

0

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

Примечание: Проверка равенства выступает в качестве дополнительного преимущества.

function sort_count($a, $b) { 
    if ($a['count'] === $b['count']) { 
     return 0; 
    } else { 
     return ($a['count'] > $b['count'] ? 1:-1); 
    } 
} 
$sorted_array = usort($array, 'sort_count'); 

echo "<pre>"; 

print_r($array); 

echo "</pre>"; 

Надеюсь, это поможет.

2

Восходящий ..

usort($your_array, function($a, $b) { 
    return $a['count'] - $b['count']; 
}); 

по убыванию ..

usort($your_array, function($a, $b) { 
    return $b['count'] - $a['count']; 
}); 

Example here

+0

Это будет работать на PHP 5.3 или выше. (анонные функции) Если вы используете более низкую версию. Сначала вам нужно определить функцию. Как и в вашем примере. – KyleK

+0

он не сортирует по убыванию – RomanPerekhrest

0

Вот решение:

$a1 = array (array ("text" => "this is text", "count" => 0), 
    array ("text" => "this is text", "count" => 1), 
    array ("text" => "this is text", "count" => 2), 
); 
usort($a1 ,sortArray('count')); 
function sortArray($keyName) { 
    return function ($a, $b) use ($keyName) {return ($a[$keyName]< $b[$keyName]) ? 1 : 0; 
    }; 
} 
print_r($a1); 
Смежные вопросы