1--TEST--
2Test array_filter() function : usage variations - Different types of array for 'input' argument
3--FILE--
4<?php
5/*
6* Passing different types of array as 'input' argument.
7*/
8
9function always_false($input)
10{
11  return false;
12}
13
14// callback function returning always true
15function always_true($input)
16{
17  return true;
18}
19
20echo "*** Testing array_filter() : usage variations - different types of array for 'input' argument***\n";
21
22// different types of 'input' array
23$input_values = array(
24  array(0, 1, 2, -1, 034, 0X4A),  // integer values
25  array(0.0, 1.2, 1.2e3, 1.2e-3),  // float values
26  array('value1', "value2", '', " ", ""),  // string values
27  array(true, false, TRUE, FALSE),  // bool values
28  array(null, NULL),  // null values
29  array(1 => 'one', 'zero' => 0, -2 => "value"), //associative array
30  array("one" => 1, null => 'null', 5 => "float", true => 1, "" => 'empty'),  // associative array with different keys
31  array(1 => 'one', 2, "key" => 'value')  // combinition of associative and non-associative array
32
33);
34
35// loop through each element of 'input' with default callback
36for($count = 0; $count < count($input_values); $count++)
37{
38  echo "-- Iteration ".($count + 1). " --\n";
39  var_dump( array_filter($input_values[$count]) );
40  var_dump( array_filter($input_values[$count], 'always_true') );
41  var_dump( array_filter($input_values[$count], 'always_false') );
42}
43
44echo "Done"
45?>
46--EXPECT--
47*** Testing array_filter() : usage variations - different types of array for 'input' argument***
48-- Iteration 1 --
49array(5) {
50  [1]=>
51  int(1)
52  [2]=>
53  int(2)
54  [3]=>
55  int(-1)
56  [4]=>
57  int(28)
58  [5]=>
59  int(74)
60}
61array(6) {
62  [0]=>
63  int(0)
64  [1]=>
65  int(1)
66  [2]=>
67  int(2)
68  [3]=>
69  int(-1)
70  [4]=>
71  int(28)
72  [5]=>
73  int(74)
74}
75array(0) {
76}
77-- Iteration 2 --
78array(3) {
79  [1]=>
80  float(1.2)
81  [2]=>
82  float(1200)
83  [3]=>
84  float(0.0012)
85}
86array(4) {
87  [0]=>
88  float(0)
89  [1]=>
90  float(1.2)
91  [2]=>
92  float(1200)
93  [3]=>
94  float(0.0012)
95}
96array(0) {
97}
98-- Iteration 3 --
99array(3) {
100  [0]=>
101  string(6) "value1"
102  [1]=>
103  string(6) "value2"
104  [3]=>
105  string(1) " "
106}
107array(5) {
108  [0]=>
109  string(6) "value1"
110  [1]=>
111  string(6) "value2"
112  [2]=>
113  string(0) ""
114  [3]=>
115  string(1) " "
116  [4]=>
117  string(0) ""
118}
119array(0) {
120}
121-- Iteration 4 --
122array(2) {
123  [0]=>
124  bool(true)
125  [2]=>
126  bool(true)
127}
128array(4) {
129  [0]=>
130  bool(true)
131  [1]=>
132  bool(false)
133  [2]=>
134  bool(true)
135  [3]=>
136  bool(false)
137}
138array(0) {
139}
140-- Iteration 5 --
141array(0) {
142}
143array(2) {
144  [0]=>
145  NULL
146  [1]=>
147  NULL
148}
149array(0) {
150}
151-- Iteration 6 --
152array(2) {
153  [1]=>
154  string(3) "one"
155  [-2]=>
156  string(5) "value"
157}
158array(3) {
159  [1]=>
160  string(3) "one"
161  ["zero"]=>
162  int(0)
163  [-2]=>
164  string(5) "value"
165}
166array(0) {
167}
168-- Iteration 7 --
169array(4) {
170  ["one"]=>
171  int(1)
172  [""]=>
173  string(5) "empty"
174  [5]=>
175  string(5) "float"
176  [1]=>
177  int(1)
178}
179array(4) {
180  ["one"]=>
181  int(1)
182  [""]=>
183  string(5) "empty"
184  [5]=>
185  string(5) "float"
186  [1]=>
187  int(1)
188}
189array(0) {
190}
191-- Iteration 8 --
192array(3) {
193  [1]=>
194  string(3) "one"
195  [2]=>
196  int(2)
197  ["key"]=>
198  string(5) "value"
199}
200array(3) {
201  [1]=>
202  string(3) "one"
203  [2]=>
204  int(2)
205  ["key"]=>
206  string(5) "value"
207}
208array(0) {
209}
210Done
211