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--EXPECTF--
121*** Testing natcasesort() : usage variation ***
122
123-- Iteration 1 --
124bool(true)
125array(4) {
126  [3]=>
127  int(-2345)
128  [0]=>
129  int(0)
130  [1]=>
131  int(1)
132  [2]=>
133  int(12345)
134}
135
136-- Iteration 2 --
137bool(true)
138array(5) {
139  [1]=>
140  float(-10.5)
141  [4]=>
142  float(0.5)
143  [3]=>
144  float(1.23456789E-9)
145  [0]=>
146  float(10.5)
147  [2]=>
148  float(123456789000)
149}
150
151-- Iteration 3 --
152bool(true)
153array(2) {
154  [0]=>
155  NULL
156  [1]=>
157  NULL
158}
159
160-- Iteration 4 --
161bool(true)
162array(4) {
163  [1]=>
164  bool(false)
165  [3]=>
166  bool(false)
167  [0]=>
168  bool(true)
169  [2]=>
170  bool(true)
171}
172
173-- Iteration 5 --
174bool(true)
175array(2) {
176  [0]=>
177  string(0) ""
178  [1]=>
179  string(0) ""
180}
181
182-- Iteration 6 --
183bool(true)
184array(0) {
185}
186
187-- Iteration 7 --
188bool(true)
189array(3) {
190  [2]=>
191  string(11) "hello world"
192  [0]=>
193  string(6) "string"
194  [1]=>
195  string(6) "string"
196}
197
198-- Iteration 8 --
199bool(true)
200array(1) {
201  [0]=>
202  object(classA)#%d (0) {
203  }
204}
205
206-- Iteration 9 --
207bool(true)
208array(1) {
209  [0]=>
210  NULL
211}
212
213-- Iteration 10 --
214bool(true)
215array(1) {
216  [0]=>
217  NULL
218}
219
220-- Iteration 11 --
221bool(true)
222array(1) {
223  [0]=>
224  resource(%d) of type (stream)
225}
226Done
227