1--TEST-- 2Test uasort() function : usage variations - sort different numeric values 3--FILE-- 4<?php 5/* Prototype : bool uasort(array $array_arg, string $cmp_function) 6 * Description: Sort an array with a user-defined comparison function and maintain index association 7 * Source code: ext/standard/array.c 8*/ 9 10/* 11* sorting different types of numeric arrays containing data of following type: 12* integer, octal, hexadecimal & float 13*/ 14 15// comparison function 16/* Prototype : int cmp_function(mixed $value1, mixed $value2) 17 * Parameters : $value1 and $value2 - values to be compared 18 * Return value : 0 - if both values are same 19 * 1 - if value1 is greater than value2 20 * -1 - if value1 is less than value2 21 * Description : compares value1 and value2 22 */ 23function cmp_function($value1, $value2) 24{ 25 if($value1 == $value2) { 26 return 0; 27 } 28 else if($value1 > $value2) { 29 return 1; 30 } 31 else { 32 return -1; 33 } 34} 35 36echo "*** Testing uasort() : different numeric arrays as 'array_arg' ***\n"; 37 38// Int array 39$int_values = array(0 => 3, 1 => 2, 3 => 100, 4 => 150, 5 => 25, 6 => 350, 7 => 0, 8 => -3, 9 => -1200); 40echo "-- Sorting Integer array --\n"; 41var_dump( uasort($int_values, 'cmp_function') ); // expecting: bool(true) 42var_dump($int_values); 43 44// Octal array 45$octal_values = array(0 => 056, 1 => 023, 2 => 00, 3 => 015, 4 => -045, 5 => 01, 6 => -07); 46echo "-- Sorting Octal array --\n"; 47var_dump( uasort($octal_values, 'cmp_function') ); // expecting: bool(true) 48var_dump($octal_values); 49 50// Hexadecimal array 51$hex_values = array(0 => 0xAE, 1 => 0x2B, 2 => 0X10, 3 => -0xCF, 4 => 0X12, 5 => -0XF2); 52echo "-- Sorting Hex array --\n"; 53var_dump( uasort($hex_values, 'cmp_function') ); // expecting: bool(true) 54var_dump($hex_values); 55 56// Float array 57$float_values = array( 0 => 10.2, 1 => 2.4, 2 => -3.4, 3 => 0, 4 => 0.5, 5 => 7.3e3, 6 => -9.34E-2); 58echo "-- Sorting Float array --\n"; 59var_dump( uasort($float_values, 'cmp_function') ); // expecting: bool(true) 60var_dump($float_values); 61 62// empty array 63$empty_array = array(); 64echo "-- Sorting empty array --\n"; 65var_dump( uasort($empty_array, 'cmp_function') ); // expecting: bool(true) 66var_dump($empty_array); 67 68echo "Done" 69?> 70--EXPECT-- 71*** Testing uasort() : different numeric arrays as 'array_arg' *** 72-- Sorting Integer array -- 73bool(true) 74array(9) { 75 [9]=> 76 int(-1200) 77 [8]=> 78 int(-3) 79 [7]=> 80 int(0) 81 [1]=> 82 int(2) 83 [0]=> 84 int(3) 85 [5]=> 86 int(25) 87 [3]=> 88 int(100) 89 [4]=> 90 int(150) 91 [6]=> 92 int(350) 93} 94-- Sorting Octal array -- 95bool(true) 96array(7) { 97 [4]=> 98 int(-37) 99 [6]=> 100 int(-7) 101 [2]=> 102 int(0) 103 [5]=> 104 int(1) 105 [3]=> 106 int(13) 107 [1]=> 108 int(19) 109 [0]=> 110 int(46) 111} 112-- Sorting Hex array -- 113bool(true) 114array(6) { 115 [5]=> 116 int(-242) 117 [3]=> 118 int(-207) 119 [2]=> 120 int(16) 121 [4]=> 122 int(18) 123 [1]=> 124 int(43) 125 [0]=> 126 int(174) 127} 128-- Sorting Float array -- 129bool(true) 130array(7) { 131 [2]=> 132 float(-3.4) 133 [6]=> 134 float(-0.0934) 135 [3]=> 136 int(0) 137 [4]=> 138 float(0.5) 139 [1]=> 140 float(2.4) 141 [0]=> 142 float(10.2) 143 [5]=> 144 float(7300) 145} 146-- Sorting empty array -- 147bool(true) 148array(0) { 149} 150Done 151