1--TEST--
2Test array_filter() function : usage variations - 'input' argument with different false entries
3--FILE--
4<?php
5/*
6* With default callback function argument, array_filter() removes elements which are interpreted as false
7* Here Testing all the false array element possibilities
8*/
9
10function always_true($input)
11{
12  return true;
13}
14
15// callback function always_false
16function always_false($input)
17{
18  return false;
19}
20
21echo "*** Testing array_filter() : usage variations - different false elements in 'input' ***\n";
22
23// unset variable
24$unset_var = 10;
25unset($unset_var);
26
27// empty heredoc string
28$empty_heredoc =<<<EOT
29EOT;
30
31// input array with different false elements
32$input = array(
33  false,
34  False,
35  '',
36  "",
37  0,
38  0.0,
39  null,
40  NULL,
41  "0",
42  '0',
43  array(),
44  !1,
45  1==2,
46  $empty_heredoc,
47  @$unset_var,
48  @$undefined_var,
49);
50
51// With default callback function
52var_dump( array_filter($input) );
53
54// With callback function which returns always true
55var_dump( array_filter($input, 'always_true') );
56
57// With callback function which returns always false
58var_dump( array_filter($input, 'always_false') );
59
60echo "Done"
61?>
62--EXPECT--
63*** Testing array_filter() : usage variations - different false elements in 'input' ***
64array(0) {
65}
66array(16) {
67  [0]=>
68  bool(false)
69  [1]=>
70  bool(false)
71  [2]=>
72  string(0) ""
73  [3]=>
74  string(0) ""
75  [4]=>
76  int(0)
77  [5]=>
78  float(0)
79  [6]=>
80  NULL
81  [7]=>
82  NULL
83  [8]=>
84  string(1) "0"
85  [9]=>
86  string(1) "0"
87  [10]=>
88  array(0) {
89  }
90  [11]=>
91  bool(false)
92  [12]=>
93  bool(false)
94  [13]=>
95  string(0) ""
96  [14]=>
97  NULL
98  [15]=>
99  NULL
100}
101array(0) {
102}
103Done
104