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--EXPECT-- 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