1--TEST--
2Test array_filter() function : usage variations - 'input' array containing references
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 'input' array which contains elements as reference to other data
12*/
13
14echo "*** Testing array_filter() : usage variations - 'input' containing references ***\n";
15
16// Callback function
17/* Prototype : bool callback(array $input)
18 * Parameter : $input - array of which each element need to be checked in function
19 * Return Type : returns true or false
20 * Description : This function checks each element of an input array if element > 5 then
21 * returns true else returns false
22 */
23function callback($input)
24{
25  if($input > 5) {
26    return true;
27  }
28  else {
29    return false;
30  }
31}
32
33// initializing variables
34$value1 = array(1, 2, 8);
35$value2 = array(5, 6, 4);
36$input = array(&$value1, 10, &$value2, 'value');
37
38// with 'callback' argument
39var_dump( array_filter($input, 'callback') );
40
41// with default 'callback' argument
42var_dump( array_filter($input) );
43
44echo "Done"
45?>
46--EXPECT--
47*** Testing array_filter() : usage variations - 'input' containing references ***
48array(3) {
49  [0]=>
50  &array(3) {
51    [0]=>
52    int(1)
53    [1]=>
54    int(2)
55    [2]=>
56    int(8)
57  }
58  [1]=>
59  int(10)
60  [2]=>
61  &array(3) {
62    [0]=>
63    int(5)
64    [1]=>
65    int(6)
66    [2]=>
67    int(4)
68  }
69}
70array(4) {
71  [0]=>
72  &array(3) {
73    [0]=>
74    int(1)
75    [1]=>
76    int(2)
77    [2]=>
78    int(8)
79  }
80  [1]=>
81  int(10)
82  [2]=>
83  &array(3) {
84    [0]=>
85    int(5)
86    [1]=>
87    int(6)
88    [2]=>
89    int(4)
90  }
91  [3]=>
92  string(5) "value"
93}
94Done
95