1--TEST-- 2Test usort() function : basic functionality 3--FILE-- 4<?php 5/* Prototype : bool usort(array $array_arg, string $cmp_function) 6 * Description: Sort an array by values using a user-defined comparison function 7 * Source code: ext/standard/array.c 8 */ 9 10/* 11 * Test basic functionality of usort() with indexed and associative arrays 12 */ 13 14echo "*** Testing usort() : basic functionality ***\n"; 15 16function cmp($value1, $value2) 17{ 18 if($value1 == $value2) { 19 return 0; 20 } 21 else if($value1 > $value2) { 22 return 1; 23 } 24 else 25 return -1; 26} 27 28// Int array with default keys 29$int_values = array(1, 8, 9, 3, 2, 6, 7); 30 31echo "\n-- Numeric array with default keys --\n"; 32var_dump( usort($int_values, 'cmp') ); 33var_dump($int_values); 34 35// String array with default keys 36$string_values = array("This", "is", 'a', "test"); 37 38echo "\n-- String array with default keys --\n"; 39var_dump( usort($string_values, 'cmp') ); 40var_dump($string_values); 41 42// Associative array with numeric keys 43$numeric_key_arg = array(1=> 1, 2 => 2, 3 => 7, 5 => 4, 4 => 9); 44 45echo "\n-- Associative array with numeric keys --\n"; 46var_dump( usort($numeric_key_arg, 'cmp') ); 47var_dump($numeric_key_arg); 48 49// Associative array with string keys 50$string_key_arg = array('one' => 4, 'two' => 2, 'three' => 1, 'four' => 10); 51 52echo "\n-- Associative array with string keys --\n"; 53var_dump( usort($string_key_arg, 'cmp') ); 54var_dump($string_key_arg); 55?> 56===DONE=== 57--EXPECTF-- 58*** Testing usort() : basic functionality *** 59 60-- Numeric array with default keys -- 61bool(true) 62array(7) { 63 [0]=> 64 int(1) 65 [1]=> 66 int(2) 67 [2]=> 68 int(3) 69 [3]=> 70 int(6) 71 [4]=> 72 int(7) 73 [5]=> 74 int(8) 75 [6]=> 76 int(9) 77} 78 79-- String array with default keys -- 80bool(true) 81array(4) { 82 [0]=> 83 string(4) "This" 84 [1]=> 85 string(1) "a" 86 [2]=> 87 string(2) "is" 88 [3]=> 89 string(4) "test" 90} 91 92-- Associative array with numeric keys -- 93bool(true) 94array(5) { 95 [0]=> 96 int(1) 97 [1]=> 98 int(2) 99 [2]=> 100 int(4) 101 [3]=> 102 int(7) 103 [4]=> 104 int(9) 105} 106 107-- Associative array with string keys -- 108bool(true) 109array(4) { 110 [0]=> 111 int(1) 112 [1]=> 113 int(2) 114 [2]=> 115 int(4) 116 [3]=> 117 int(10) 118} 119===DONE=== 120