1--TEST--
2Test array_filter() function : usage variations - Callback function with different return values
3--FILE--
4<?php
5/*
6* callback functions are expected to return bool value for array_filter()
7* here testing callback functions for return values other than bool
8*/
9
10echo "*** Testing array_filter() : usage variations - callback function with different return values***\n";
11
12$input = array(0, 1, -1, 10, 100, 1000, 'Hello', null, true);
13
14function callback1($input)
15{
16  return 5;
17}
18echo "callback function with int return value\n";
19var_dump( array_filter($input, 'callback1') );
20
21// float as return value
22function callback2($input)
23{
24  return 3.4;
25}
26echo "callback function with float return value\n";
27var_dump( array_filter($input, 'callback2') );
28
29// string as return value
30function callback3($input)
31{
32  return 'value';
33}
34echo "callback function with string return value\n";
35var_dump( array_filter($input, 'callback3') );
36
37// null as return value
38function callback4($input)
39{
40  return null;
41}
42echo "callback function with null return value\n";
43var_dump( array_filter($input, 'callback4') );
44
45// array as return value
46function callback5($input)
47{
48  return array(8);
49}
50echo "callback function with array as return value\n";
51var_dump( array_filter($input, 'callback5') );
52
53echo "Done"
54?>
55--EXPECT--
56*** Testing array_filter() : usage variations - callback function with different return values***
57callback function with int return value
58array(9) {
59  [0]=>
60  int(0)
61  [1]=>
62  int(1)
63  [2]=>
64  int(-1)
65  [3]=>
66  int(10)
67  [4]=>
68  int(100)
69  [5]=>
70  int(1000)
71  [6]=>
72  string(5) "Hello"
73  [7]=>
74  NULL
75  [8]=>
76  bool(true)
77}
78callback function with float return value
79array(9) {
80  [0]=>
81  int(0)
82  [1]=>
83  int(1)
84  [2]=>
85  int(-1)
86  [3]=>
87  int(10)
88  [4]=>
89  int(100)
90  [5]=>
91  int(1000)
92  [6]=>
93  string(5) "Hello"
94  [7]=>
95  NULL
96  [8]=>
97  bool(true)
98}
99callback function with string return value
100array(9) {
101  [0]=>
102  int(0)
103  [1]=>
104  int(1)
105  [2]=>
106  int(-1)
107  [3]=>
108  int(10)
109  [4]=>
110  int(100)
111  [5]=>
112  int(1000)
113  [6]=>
114  string(5) "Hello"
115  [7]=>
116  NULL
117  [8]=>
118  bool(true)
119}
120callback function with null return value
121array(0) {
122}
123callback function with array as return value
124array(9) {
125  [0]=>
126  int(0)
127  [1]=>
128  int(1)
129  [2]=>
130  int(-1)
131  [3]=>
132  int(10)
133  [4]=>
134  int(100)
135  [5]=>
136  int(1000)
137  [6]=>
138  string(5) "Hello"
139  [7]=>
140  NULL
141  [8]=>
142  bool(true)
143}
144Done
145