2010-01-11 5 views
8

Как я могу отсортировать этот массив по arrray ключасортировать массив в НАР порядке

array(
4 => 'four', 
3 => 'three', 
2 => 'two', 
1 => 'one', 
) 

как этот

array(
1 => 'one', 
2 => 'two', 
3 => 'three', 
4 => 'four', 
) 
+0

Словари не сортируются ... дополнительно ct ключи в отдельный список и сортировать их. –

ответ

21

Если вы просто хотите, чтобы изменить порядок, используйте array_reverse:

$reverse = array_reverse($array, true); 

Второй параметр для сохранения ключей.

3

у вас есть массив, вы хотите отсортировать его по ключам в обратном порядке - - вы можете использовать функцию krsort:

сортирует массив по ключам в обратном порядке , сохраняя ключ данных корреляции. Это полезно в основном для ассоциативных массивов.


В случае вас, вы бы иметь такой код:

$arr = array(
    1 => 'one', 
    2 => 'two', 
    3 => 'three', 
    4 => 'four', 
); 

krsort($arr); 
var_dump($arr); 

, который получил бы вам этот вид продукции:

$ /usr/local/php-5.3/bin/php temp.php 
array(4) { 
    [4]=> 
    string(4) "four" 
    [3]=> 
    string(5) "three" 
    [2]=> 
    string(3) "two" 
    [1]=> 
    string(3) "one" 
} 


Как sidenode: если бы вы хотели сортировать по значениям, вы могли бы использовать arsort - но, похоже, это не так, как вы хотите.

0

Попробуйте krsort() - это будет сортироваться в обратном порядке с помощью ключа массива, тогда как rsort будет сортировать по значению массива.

27

Если вы хотите отсортировать ключи в использовании порядка DESC:

krsort($arr); 

Если вы хотите, чтобы отсортировать значения в порядке DESC и поддерживать использование индекса ассоциации:

arsort($arr); 

если вы хотите сортировать значения в естественном порядке DESC и поддерживать использование ассоциаций индекса:

natcasesort($arr); 
$arr = array_reverse($arr, true);