diff --git a/functions/array.xml b/functions/array.xml index d238823184..3f0040acce 100644 --- a/functions/array.xml +++ b/functions/array.xml @@ -217,6 +217,115 @@ array_merge ($array1, $array2); + + + array_multisort + Sort multiple or multi-dimensional arrays + + + Description + + + bool array_multisort + array ar1 + mixed + arg + + + ... + + + + + array_multisort can be used to sort several + arrays at once or a multi-dimensional array according by one of + more dimensions. It maintains key association when sorting. + + + + The input arrays are treated as columns of a table to be sorted + by rows - this resembles the functionality of SQL ORDER BY + clause. The first array is the primary one to sort by. The rows + (values) in that array that compare the same are sorted by the + next input array, and so on. + + + + The argument structure of this function is a bit unusual, but + flexible. The very first argument has to be an + array. Subsequently, each argument can be either an array or a + sorting flag from the following lists. + + + + Sorting order flags: + + + SORT_ASC - sort in ascending order + + + SORT_DESC - sort in descending order + + + + + + Sorting type flags: + + + SORT_REGULAR - compare items normally + + + SORT_NUMERIC - compare items numerically + + + SORT_STRING - compare items as strings + + + + + + No two sorting flags of the same type can be specified after each + array. The sortings flags specified after an array argument apply + only to that array - they are reset to default SORT_ASC and + SORT_REGULAR after before each new array argument. + + + + Returns true on success, false on failure. + + + + Sorting multiple arrays + +$ar1 = array("10", 100, 100, "a"); +$ar2 = array(1, 3, "2", 1); +array_multisort($ar1, $ar2); + + + In this example, after sorting, the first array will contain 10, + "a", 100, 100. The second array will contain 1, 1, 2, "3". The + entries in the second array corresponding to the identical + entries in the first array (100 and 100) were sorted as well. + + + + + Sorting multi-dimensional array + +$ar = array(array("10", 100, 100, "a"), array(1, 3, "2", 1)); +array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC); + + + In this example, after sorting, the first array will contain 10, + 100, 100, "a" (it was sorted as strings in ascending order), and + the second one will contain 1, 3, "2", 1 (sorted as numbers, in + descending order). + + + + + array_pad