1--TEST--
2Test usort() function : usage variations - diff. array values
3--FILE--
4<?php
5/*
6 * Pass an array with different data types as keys to usort() to test how it is re-ordered
7 */
8
9echo "*** Testing usort() : usage variation ***\n";
10
11function cmp_function($value1, $value2)
12{
13  if($value1 == $value2) {
14    return 0;
15  }
16  else if($value1 > $value2) {
17    return -1;
18  }
19  else {
20    return 1;
21  }
22}
23
24// different heredoc strings
25
26// single line heredoc string
27$simple_heredoc = <<<EOT2
28simple
29EOT2;
30
31// multiline heredoc string
32$multiline_heredoc = <<<EOT3
33multiline heredoc with 123
34and speci@! ch@r..\ncheck\talso
35EOT3;
36
37$array_arg = array(
38  // numeric keys
39  -2 => 9,
40  8.9 => 8,
41  012 => 7,
42  0x34 => 6,
43
44  // string keys
45  'key' => 5,  //single quoted key
46  "two" => 4,  //double quoted key
47  " " => 0,  // space as key
48
49  // bool keys
50  TRUE => 100,
51  FALSE => 25,
52
53  // null keys
54  NULL => 35,
55
56  // binary key
57  "a".chr(0)."b" => 45,
58  b"binary" => 30,
59
60  //heredoc keys
61  $simple_heredoc => 75,
62  $multiline_heredoc => 200,
63
64  // default key
65  1,
66);
67
68var_dump( usort($array_arg, 'cmp_function') );
69echo "\n-- Sorted array after usort() function call --\n";
70var_dump($array_arg);
71?>
72--EXPECT--
73*** Testing usort() : usage variation ***
74bool(true)
75
76-- Sorted array after usort() function call --
77array(15) {
78  [0]=>
79  int(200)
80  [1]=>
81  int(100)
82  [2]=>
83  int(75)
84  [3]=>
85  int(45)
86  [4]=>
87  int(35)
88  [5]=>
89  int(30)
90  [6]=>
91  int(25)
92  [7]=>
93  int(9)
94  [8]=>
95  int(8)
96  [9]=>
97  int(7)
98  [10]=>
99  int(6)
100  [11]=>
101  int(5)
102  [12]=>
103  int(4)
104  [13]=>
105  int(1)
106  [14]=>
107  int(0)
108}
109