1--TEST-- 2Test usort() function : usage variations - multi-dimensional arrays 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 * Pass a multi-dimensional array as $array_arg argument to usort() 12 * to test how array is re-ordered 13 */ 14 15echo "*** Testing usort() : usage variation ***\n"; 16 17function cmp_function($value1, $value2) 18{ 19 if($value1 == $value2) { 20 return 0; 21 } 22 else if($value1 > $value2) { 23 return 1; 24 } 25 else { 26 return -1; 27 } 28} 29 30$array_args = array( 31 0 => array(2, 10, -1), 32 1 => array(100), 33 2 => array(), 34 3 => array(0), 35 4 => array(-1), 36 5 => array(-9, 34, 54, 0, 20), 37 6 => array(''), 38 7 => array("apple", "Apple", "APPLE", "aPPle", "aPpLe") 39); 40 41$temp_array = $array_args; 42 43echo "\n-- Pass usort() a two-dimensional array --\n"; 44// sorting array_arg as whole array 45var_dump( usort($temp_array, 'cmp_function') ); 46 47echo "-- Array after call to usort() --\n"; 48var_dump($temp_array); 49 50echo "\n-- Pass usort() a sub-array --\n"; 51var_dump( usort($array_args[5], 'cmp_function') ); 52 53echo "-- Array after call to usort() --\n"; 54var_dump($array_args[5]); 55?> 56===DONE=== 57--EXPECTF-- 58*** Testing usort() : usage variation *** 59 60-- Pass usort() a two-dimensional array -- 61bool(true) 62-- Array after call to usort() -- 63array(8) { 64 [0]=> 65 array(0) { 66 } 67 [1]=> 68 array(1) { 69 [0]=> 70 int(-1) 71 } 72 [2]=> 73 array(1) { 74 [0]=> 75 int(0) 76 } 77 [3]=> 78 array(1) { 79 [0]=> 80 string(0) "" 81 } 82 [4]=> 83 array(1) { 84 [0]=> 85 int(100) 86 } 87 [5]=> 88 array(3) { 89 [0]=> 90 int(2) 91 [1]=> 92 int(10) 93 [2]=> 94 int(-1) 95 } 96 [6]=> 97 array(5) { 98 [0]=> 99 int(-9) 100 [1]=> 101 int(34) 102 [2]=> 103 int(54) 104 [3]=> 105 int(0) 106 [4]=> 107 int(20) 108 } 109 [7]=> 110 array(5) { 111 [0]=> 112 string(5) "apple" 113 [1]=> 114 string(5) "Apple" 115 [2]=> 116 string(5) "APPLE" 117 [3]=> 118 string(5) "aPPle" 119 [4]=> 120 string(5) "aPpLe" 121 } 122} 123 124-- Pass usort() a sub-array -- 125bool(true) 126-- Array after call to usort() -- 127array(5) { 128 [0]=> 129 int(-9) 130 [1]=> 131 int(0) 132 [2]=> 133 int(20) 134 [3]=> 135 int(34) 136 [4]=> 137 int(54) 138} 139===DONE=== 140