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