1--TEST--
2Test array_map() function : usage variations - null value for 'callback' argument
3--FILE--
4<?php
5/*
6 * Test array_map() by passing null values for $callback argument and testing whether shortest
7 * array will be extended with empty elements
8 */
9
10echo "*** Testing array_map() : null value for 'callback' argument ***\n";
11
12// arrays to be passed as arguments
13$arr1 = array(1, 2);
14$arr2 = array("one", "two");
15$arr3 = array(1.1, 2.2);
16
17// get an unset variable
18$unset_var = 10;
19unset ($unset_var);
20
21/* calling array_map() with null callback */
22
23echo "-- with null --\n";
24var_dump( array_map(null, $arr1, $arr2, $arr3) );
25var_dump( array_map(NULL, $arr1, $arr2, $arr3) );
26
27echo "-- with unset variable --\n";
28var_dump( array_map(@$unset_var, $arr1, $arr2, $arr3) );
29
30echo "-- with undefined variable --\n";
31var_dump( array_map(@$undefined_var, $arr1) );
32
33echo "-- with empty string --\n";
34try {
35    var_dump( array_map("", $arr1, $arr2) );
36} catch (TypeError $e) {
37    echo $e->getMessage(), "\n";
38}
39
40echo "-- with empty array --\n";
41try {
42    var_dump( array_map(array(), $arr1, $arr2) );
43} catch (TypeError $e) {
44    echo $e->getMessage(), "\n";
45}
46
47echo "Done";
48?>
49--EXPECT--
50*** Testing array_map() : null value for 'callback' argument ***
51-- with null --
52array(2) {
53  [0]=>
54  array(3) {
55    [0]=>
56    int(1)
57    [1]=>
58    string(3) "one"
59    [2]=>
60    float(1.1)
61  }
62  [1]=>
63  array(3) {
64    [0]=>
65    int(2)
66    [1]=>
67    string(3) "two"
68    [2]=>
69    float(2.2)
70  }
71}
72array(2) {
73  [0]=>
74  array(3) {
75    [0]=>
76    int(1)
77    [1]=>
78    string(3) "one"
79    [2]=>
80    float(1.1)
81  }
82  [1]=>
83  array(3) {
84    [0]=>
85    int(2)
86    [1]=>
87    string(3) "two"
88    [2]=>
89    float(2.2)
90  }
91}
92-- with unset variable --
93array(2) {
94  [0]=>
95  array(3) {
96    [0]=>
97    int(1)
98    [1]=>
99    string(3) "one"
100    [2]=>
101    float(1.1)
102  }
103  [1]=>
104  array(3) {
105    [0]=>
106    int(2)
107    [1]=>
108    string(3) "two"
109    [2]=>
110    float(2.2)
111  }
112}
113-- with undefined variable --
114array(2) {
115  [0]=>
116  int(1)
117  [1]=>
118  int(2)
119}
120-- with empty string --
121array_map(): Argument #1 ($callback) must be a valid callback or null, function "" not found or invalid function name
122-- with empty array --
123array_map(): Argument #1 ($callback) must be a valid callback or null, array callback must have exactly two members
124Done
125