1--TEST-- 2Test uasort() function : usage variations - sort array having subarrays 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* Testing uasort() with 'array_arg' having different subarrays as array elements 12*/ 13 14// comparison function 15/* Prototype : int cmp_function(mixed $value1, mixed $value2) 16 * Parameters : $value1 and $value2 - values to be compared 17 * Return value : 0 - if both values are same 18 * 1 - if value1 is greater than value2 19 * -1 - if value1 is less than value2 20 * Description : compares value1 and value2 21 */ 22function cmp_function($value1, $value2) 23{ 24 if($value1 == $value2) { 25 return 0; 26 } 27 else if($value1 > $value2) { 28 return 1; 29 } 30 else { 31 return -1; 32 } 33} 34 35echo "*** Testing uasort() : sorting array having different subarrays ***\n"; 36 37$array_args = array( 38 0 => array(2, 10, -1), 39 1 => array(100), 40 2 => array(), 41 3 => array(0), 42 4 => array(-1), 43 5 => array(-9, 34, 54, 0, 20), 44 6 => array(''), 45 7 => array("apple", "Apple", "APPLE", "aPPle", "aPpLe") 46); 47$temp_array = $array_args; 48// sorting array_arg as whole array 49var_dump( uasort($temp_array, 'cmp_function') ); // expecting: bool(true) 50var_dump($temp_array); 51 52?> 53--EXPECT-- 54*** Testing uasort() : sorting array having different subarrays *** 55bool(true) 56array(8) { 57 [2]=> 58 array(0) { 59 } 60 [4]=> 61 array(1) { 62 [0]=> 63 int(-1) 64 } 65 [3]=> 66 array(1) { 67 [0]=> 68 int(0) 69 } 70 [6]=> 71 array(1) { 72 [0]=> 73 string(0) "" 74 } 75 [1]=> 76 array(1) { 77 [0]=> 78 int(100) 79 } 80 [0]=> 81 array(3) { 82 [0]=> 83 int(2) 84 [1]=> 85 int(10) 86 [2]=> 87 int(-1) 88 } 89 [5]=> 90 array(5) { 91 [0]=> 92 int(-9) 93 [1]=> 94 int(34) 95 [2]=> 96 int(54) 97 [3]=> 98 int(0) 99 [4]=> 100 int(20) 101 } 102 [7]=> 103 array(5) { 104 [0]=> 105 string(5) "apple" 106 [1]=> 107 string(5) "Apple" 108 [2]=> 109 string(5) "APPLE" 110 [3]=> 111 string(5) "aPPle" 112 [4]=> 113 string(5) "aPpLe" 114 } 115} 116