1--TEST--
2Test array_map() function : usage variations - array with references
3--FILE--
4<?php
5/* Prototype  : array array_map  ( callback $callback  , array $arr1  [, array $...  ] )
6 * Description: Applies the callback to the elements of the given arrays
7 * Source code: ext/standard/array.c
8 */
9
10/*
11 * Test array_map() by passing array having reference values for $arr1 argument
12 */
13
14echo "*** Testing array_map() : array with references for 'arr1' argument ***\n";
15
16function callback1($a)
17{
18  return ($a);
19}
20
21function callback_cat($a, $b)
22{
23  return ($a . $b);
24}
25
26// reference variables
27$value1 = 10;
28$value2 = "hello";
29$value3 = 0;
30$value4 = &$value2;
31
32// array containing reference variables
33$arr1 = array(
34  0 => 0,
35  1 => &$value4,
36  2 => &$value2,
37  3 => "hello",
38  4 => &$value3,
39  $value4 => &$value2
40);
41echo "-- with one array --\n";
42var_dump( array_map('callback1', $arr1) );
43
44echo "-- with two arrays --\n";
45var_dump( array_map('callback_cat', $arr1, $arr1) );
46
47echo "Done";
48?>
49--EXPECTF--
50*** Testing array_map() : array with references for 'arr1' argument ***
51-- with one array --
52array(6) {
53  [0]=>
54  int(0)
55  [1]=>
56  string(5) "hello"
57  [2]=>
58  string(5) "hello"
59  [3]=>
60  string(5) "hello"
61  [4]=>
62  int(0)
63  ["hello"]=>
64  string(5) "hello"
65}
66-- with two arrays --
67array(6) {
68  [0]=>
69  string(2) "00"
70  [1]=>
71  string(10) "hellohello"
72  [2]=>
73  string(10) "hellohello"
74  [3]=>
75  string(10) "hellohello"
76  [4]=>
77  string(2) "00"
78  [5]=>
79  string(10) "hellohello"
80}
81Done
82