|
rsort
Sort an array in reverse order
(PHP 4, PHP 5)
Example 321. rsort() example<?php The above example will output: 0 = orange Related Examples ( Source code ) » rsort Examples ( Source code ) » arsort Sort an array in reverse order and maintain index association Examples ( Source code ) » To reverse sort an enumerated array, use the rsort () function Code Examples / Notes » rsortray
Like sort(), rsort() assigns new keys for the elements in array. It will remove any existing keys you may have assigned, rather than just reordering the keys. This means that it will destroy associative keys. $animals = array("dog"=>"large", "cat"=>"medium", "mouse"=>"small"); print_r($animals); //Array ( [dog] => large [cat] => medium [mouse] => small ) rsort($animals); print_r($animals); //Array ( [0] => small [1] => medium [2] => large ) Use KSORT() or KRSORT() to preserve associative keys. slevy1
I thought rsort was working successfully or on a multi-dimensional array of strings that had first been sorted with usort(). But, I noticed today that the array was only partially in descending order. I tried array_reverse on it and that seems to have solved things.
pshirkey
I needed a function that would sort a list of files into reversed order based on their modification date. Here's what I came up with: function display_content($dir,$ext){ $f = array(); if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($folder = readdir($dh)) !== false) { if (preg_match("/\s*$ext$/", $folder)) { $fullpath = "$dir/$folder"; $mtime = filemtime ($fullpath); $ff = array($mtime => $fullpath); $f = array_merge($f, $ff); } } rsort($f, SORT_NUMERIC); while (list($key, $val) = each($f)) { $fcontents = file($val, "r"); while (list($key, $val) = each($fcontents)) echo "$val\n"; } } } closedir($dh); } Call it like so: display_content("folder","extension"); rnk-php
Apparently rsort does not put arrays with one value back to zero. If you have an array like: $tmp = array(9 => 'asdf') and then rsort it, $tmp[0] is empty and $tmp[9] stays as is.
alex m
A cleaner (I think) way to sort a list of files into reversed order based on their modification date. <?php $path = $_SERVER[DOCUMENT_ROOT]."/files/"; $dh = @opendir($path); while (false !== ($file=readdir($dh))) { if (substr($file,0,1)!=".") $files[]=array(filemtime($path.$file),$file); #2-D array } closedir($dh); if ($files) { rsort($files); #sorts by filemtime #done! Show the files sorted by modification date foreach ($files as $file) echo "$file[0] $file[1] \n"; #file[0]=Unix timestamp; file[1]=filename } ?> |
Change Languagearray_change_key_case array_chunk array_combine array_count_values array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_diff array_fill_keys array_fill array_filter array_flip array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_product array_push array_rand array_reduce array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_uintersect_assoc array_uintersect_uassoc array_uintersect array_unique array_unshift array_values array_walk_recursive array_walk array arsort asort compact count current each end extract in_array key krsort ksort list natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort |