1--TEST-- 2Test uasort() function : basic functionality - duplicate 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 10echo "*** Testing uasort() : basic functionality with duplicate values ***\n"; 11 12// comparison function 13/* Prototype : int cmp(mixed $value1, mixed $value2) 14 * Parameters : $value1 and $value2 - values to be compared 15 * Return value : 0 - if both values are same 16 * 1 - if value1 is greater than value2 17 * -1 - if value1 is less than value2 18 * Description : compares value1 and value2 19 */ 20function cmp($value1, $value2) 21{ 22 if($value1 == $value2) { 23 return 0; 24 } 25 else if($value1 > $value2) { 26 return 1; 27 } 28 else 29 return -1; 30} 31 32// increasing values 33$int_values1 = array(1, 1, 2, 2, 3, 3); 34echo "-- Numeric array with increasing values --\n"; 35var_dump( uasort($int_values1, 'cmp') ); 36var_dump($int_values1); 37 38// decreasing values 39$int_values2 = array(3, 3, 2, 2, 1, 1); 40echo "-- Numeric array with decreasing values --\n"; 41var_dump( uasort($int_values2, 'cmp') ); 42var_dump($int_values2); 43 44// increasing and decreasing values 45$int_values3 = array(1, 2, 3, 3, 2, 1); 46echo "-- Numeric array with increasing and decreasing values --\n"; 47var_dump( uasort($int_values3, 'cmp') ); 48var_dump($int_values3); 49 50echo "Done" 51?> 52--EXPECTF-- 53*** Testing uasort() : basic functionality with duplicate values *** 54-- Numeric array with increasing values -- 55bool(true) 56array(6) { 57 [0]=> 58 int(1) 59 [1]=> 60 int(1) 61 [3]=> 62 int(2) 63 [2]=> 64 int(2) 65 [5]=> 66 int(3) 67 [4]=> 68 int(3) 69} 70-- Numeric array with decreasing values -- 71bool(true) 72array(6) { 73 [4]=> 74 int(1) 75 [5]=> 76 int(1) 77 [3]=> 78 int(2) 79 [2]=> 80 int(2) 81 [1]=> 82 int(3) 83 [0]=> 84 int(3) 85} 86-- Numeric array with increasing and decreasing values -- 87bool(true) 88array(6) { 89 [5]=> 90 int(1) 91 [0]=> 92 int(1) 93 [1]=> 94 int(2) 95 [4]=> 96 int(2) 97 [2]=> 98 int(3) 99 [3]=> 100 int(3) 101} 102Done 103