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