1--TEST--
2Test natcasesort() function : usage variations - Pass arrays of different data types
3--FILE--
4<?php
5
6/* Prototype  : bool natcasesort(array &$array_arg)
7 * Description: Sort an array using case-insensitive natural sort
8 * Source code: ext/standard/array.c
9 */
10
11/*
12 * Pass arrays of different data types to natcasesort() to test how they are sorted
13 */
14
15echo "*** Testing natcasesort() : usage variation ***\n";
16
17//get an unset variable
18$unset_var = 10;
19unset ($unset_var);
20
21// get a class
22class classA
23{
24  public function __toString() {
25    return "Class A object";
26  }
27}
28
29// heredoc string
30$heredoc = <<<EOT
31hello world
32EOT;
33
34// get a resource variable
35$fp = fopen(__FILE__, "r");
36
37// arrays of different data types to be passed to $array_arg argument
38$inputs = array(
39
40       // int data
41/*1*/  'int' => array(
42	   0,
43       1,
44       12345,
45       -2345,
46       ),
47
48       // float data
49/*2*/  'float' => array(
50       10.5,
51       -10.5,
52       12.3456789000e10,
53       12.3456789000E-10,
54       .5,
55       ),
56
57       // null data
58/*3*/ 'null' => array(
59       NULL,
60       null,
61       ),
62
63       // boolean data
64/*4*/ 'bool' => array(
65       true,
66       false,
67       TRUE,
68       FALSE,
69       ),
70
71       // empty data
72/*5*/ 'empty string' => array(
73       "",
74       '',
75       ),
76
77/*6*/ 'empty array' => array(
78       ),
79
80       // string data
81/*7*/ 'string' => array(
82       "string",
83       'string',
84       $heredoc,
85       ),
86
87       // object data
88/*8*/ 'object' => array(
89       new classA(),
90       ),
91
92       // undefined data
93/*9*/ 'undefined' => array(
94       @$undefined_var,
95       ),
96
97       // unset data
98/*10*/ 'unset' => array(
99       @$unset_var,
100       ),
101
102       // resource variable
103/*11*/ 'resource' => array(
104       $fp
105       ),
106);
107// loop through each element of $inputs to check the behavior of natcasesort()
108$iterator = 1;
109foreach($inputs as $input) {
110	echo "\n-- Iteration $iterator --\n";
111	var_dump( natcasesort($input) );
112	var_dump($input);
113	$iterator++;
114};
115
116fclose($fp);
117
118echo "Done";
119?>
120
121--EXPECTF--
122*** Testing natcasesort() : usage variation ***
123
124-- Iteration 1 --
125bool(true)
126array(4) {
127  [3]=>
128  int(-2345)
129  [0]=>
130  int(0)
131  [1]=>
132  int(1)
133  [2]=>
134  int(12345)
135}
136
137-- Iteration 2 --
138bool(true)
139array(5) {
140  [1]=>
141  float(-10.5)
142  [4]=>
143  float(0.5)
144  [3]=>
145  float(1.23456789E-9)
146  [0]=>
147  float(10.5)
148  [2]=>
149  float(123456789000)
150}
151
152-- Iteration 3 --
153bool(true)
154array(2) {
155  [0]=>
156  NULL
157  [1]=>
158  NULL
159}
160
161-- Iteration 4 --
162bool(true)
163array(4) {
164  [1]=>
165  bool(false)
166  [3]=>
167  bool(false)
168  [0]=>
169  bool(true)
170  [2]=>
171  bool(true)
172}
173
174-- Iteration 5 --
175bool(true)
176array(2) {
177  [0]=>
178  string(0) ""
179  [1]=>
180  string(0) ""
181}
182
183-- Iteration 6 --
184bool(true)
185array(0) {
186}
187
188-- Iteration 7 --
189bool(true)
190array(3) {
191  [2]=>
192  string(11) "hello world"
193  [0]=>
194  string(6) "string"
195  [1]=>
196  string(6) "string"
197}
198
199-- Iteration 8 --
200bool(true)
201array(1) {
202  [0]=>
203  object(classA)#%d (0) {
204  }
205}
206
207-- Iteration 9 --
208bool(true)
209array(1) {
210  [0]=>
211  NULL
212}
213
214-- Iteration 10 --
215bool(true)
216array(1) {
217  [0]=>
218  NULL
219}
220
221-- Iteration 11 --
222bool(true)
223array(1) {
224  [0]=>
225  resource(%d) of type (stream)
226}
227Done
228