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