1--TEST--
2Test array_fill_keys() function : variation of parameter
3--FILE--
4<?php
5/* Prototype  : proto array array_fill_keys(array keys, mixed val)
6 * Description: Create an array using the elements of the first parameter as keys each initialized to val
7 * Source code: ext/standard/array.c
8 * Alias to functions:
9 */
10
11/* Testing with reference types for the arguments */
12
13echo "*** Testing array_fill_keys() : parameter variations ***\n";
14
15$nullVal = null;
16$simpleStr = "simple";
17$refString = &$simpleStr;
18$fp = fopen(__FILE__, "r");
19$emptyArr = array();
20$bool = false;
21$float = 2.4;
22
23class classA {
24  public function __toString() { return "Class A object"; }
25}
26$obj = new classA();
27
28
29echo "\n-- Testing array_fill_keys() function with reference value --\n";
30$keyedArray = array("one", "two");
31var_dump(array_fill_keys($keyedArray, $refString));
32
33echo "\n-- Testing array_fill_keys() function with reference keys --\n";
34$refKeys = array("one", &$simpleStr);
35$res = array_fill_keys($refKeys, $simpleStr);
36var_dump($res);
37$simpleStr = "bob";
38var_dump($res);
39
40
41echo "\n-- Testing array_fill_keys() function with reference array input --\n";
42$newArray = array("one", "two");
43$refArray = &$newArray;
44var_dump(array_fill_keys($refArray, $simpleStr));
45
46fclose($fp);
47echo "Done";
48?>
49--EXPECT--
50*** Testing array_fill_keys() : parameter variations ***
51
52-- Testing array_fill_keys() function with reference value --
53array(2) {
54  ["one"]=>
55  string(6) "simple"
56  ["two"]=>
57  string(6) "simple"
58}
59
60-- Testing array_fill_keys() function with reference keys --
61array(2) {
62  ["one"]=>
63  string(6) "simple"
64  ["simple"]=>
65  string(6) "simple"
66}
67array(2) {
68  ["one"]=>
69  string(6) "simple"
70  ["simple"]=>
71  string(6) "simple"
72}
73
74-- Testing array_fill_keys() function with reference array input --
75array(2) {
76  ["one"]=>
77  string(3) "bob"
78  ["two"]=>
79  string(3) "bob"
80}
81Done
82