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--EXPECTF--
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  [6]=>
66  array(1) {
67    [0]=>
68    string(0) ""
69  }
70  [3]=>
71  array(1) {
72    [0]=>
73    int(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