Annotation of embedaddon/php/ext/standard/tests/array/array_combine_variation3.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Test array_combine() function : usage variations - different arrays(Bug#43424)
! 3: --FILE--
! 4: <?php
! 5: /* Prototype : array array_combine(array $keys, array $values)
! 6: * Description: Creates an array by using the elements of the first parameter as keys
! 7: * and the elements of the second as the corresponding values
! 8: * Source code: ext/standard/array.c
! 9: */
! 10:
! 11: /*
! 12: * Passing different types of arrays to both $keys and $values arguments and testing whether
! 13: * array_combine() behaves in an expected way with the arguments passed to the function
! 14: */
! 15:
! 16: echo "*** Testing array_combine() : Passing different types of arrays to both \$keys and \$values argument ***\n";
! 17: /* Different heredoc strings passed as argument to arrays */
! 18: // heredoc with blank line
! 19: $blank_line = <<<EOT
! 20:
! 21:
! 22: EOT;
! 23:
! 24: // heredoc with multiline string
! 25: $multiline_string = <<<EOT
! 26: hello world
! 27: The quick brown fox jumped over;
! 28: the lazy dog
! 29: This is a double quoted string
! 30: EOT;
! 31:
! 32: // heredoc with diferent whitespaces
! 33: $diff_whitespaces = <<<EOT
! 34: hello\r world\t
! 35: 1111\t\t != 2222\v\v
! 36: heredoc\ndouble quoted string. with\vdifferent\fwhite\vspaces
! 37: EOT;
! 38:
! 39: // heredoc with quoted strings and numeric values
! 40: $numeric_string = <<<EOT
! 41: 11 < 12. 123 >22
! 42: 'single quoted string'
! 43: "double quoted string"
! 44: 2222 != 1111.\t 0000 = 0000\n
! 45: EOT;
! 46:
! 47: // arrays passed to $keys argument
! 48: $arrays = array (
! 49: /*1*/ array(1, 2), // with default keys and numeric values
! 50: array(1.1, 2.2), // with default keys & float values
! 51: array(false,true), // with default keys and boolean values
! 52: array(), // empty array
! 53: /*5*/ array(NULL), // with NULL
! 54: array("a\v\f","aaaa\r","b","b\tbbb","c","\[\]\!\@\#\$\%\^\&\*\(\)\{\}"), // with double quoted strings
! 55: array('a\v\f','aaaa\r','b','b\tbbb','c','\[\]\!\@\#\$\%\^\&\*\(\)\{\}'), // with single quoted strings
! 56: array("h1" => $blank_line, "h2" => $multiline_string, "h3" => $diff_whitespaces, $numeric_string), // with heredocs
! 57:
! 58: // associative arrays
! 59: /*9*/ array(1 => "one", 2 => "two", 3 => "three"), // explicit numeric keys, string values
! 60: array("one" => 1, "two" => 2, "three" => 3 ), // string keys & numeric values
! 61: array( 1 => 10, 2 => 20, 4 => 40, 3 => 30), // explicit numeric keys and numeric values
! 62: array( "one" => "ten", "two" => "twenty", "three" => "thirty"), // string key/value
! 63: array("one" => 1, 2 => "two", 4 => "four"), //mixed
! 64:
! 65: // associative array, containing null/empty/boolean values as key/value
! 66: /*14*/ array(NULL => "NULL", null => "null", "NULL" => NULL, "null" => null),
! 67: array(true => "true", false => "false", "false" => false, "true" => true),
! 68: array("" => "emptyd", '' => 'emptys', "emptyd" => "", 'emptys' => ''),
! 69: array(1 => '', 2 => "", 3 => NULL, 4 => null, 5 => false, 6 => true),
! 70: array('' => 1, "" => 2, NULL => 3, null => 4, false => 5, true => 6),
! 71:
! 72: // array with repetative keys
! 73: /*19*/ array("One" => 1, "two" => 2, "One" => 10, "two" => 20, "three" => 3)
! 74: );
! 75:
! 76: // loop through each sub-array within $arrays to check the behavior of array_combine()
! 77: // same arrays are passed to both $keys and $values
! 78: $iterator = 1;
! 79: foreach($arrays as $array) {
! 80: echo "-- Iteration $iterator --\n";
! 81: var_dump( array_combine($array, $array) );
! 82: $iterator++;
! 83: }
! 84:
! 85: echo "Done";
! 86: ?>
! 87: --EXPECTF--
! 88: *** Testing array_combine() : Passing different types of arrays to both $keys and $values argument ***
! 89: -- Iteration 1 --
! 90: array(2) {
! 91: [1]=>
! 92: int(1)
! 93: [2]=>
! 94: int(2)
! 95: }
! 96: -- Iteration 2 --
! 97: array(2) {
! 98: ["1.1"]=>
! 99: float(1.1)
! 100: ["2.2"]=>
! 101: float(2.2)
! 102: }
! 103: -- Iteration 3 --
! 104: array(2) {
! 105: [""]=>
! 106: bool(false)
! 107: [1]=>
! 108: bool(true)
! 109: }
! 110: -- Iteration 4 --
! 111:
! 112: Warning: array_combine(): Both parameters should have at least 1 element in %s on line %d
! 113: bool(false)
! 114: -- Iteration 5 --
! 115: array(1) {
! 116: [""]=>
! 117: NULL
! 118: }
! 119: -- Iteration 6 --
! 120: array(6) {
! 121: ["a"]=>
! 122: string(3) "a"
! 123: ["aaaa
"]=>
! 124: string(5) "aaaa
"
! 125: ["b"]=>
! 126: string(1) "b"
! 127: ["b bbb"]=>
! 128: string(5) "b bbb"
! 129: ["c"]=>
! 130: string(1) "c"
! 131: ["\[\]\!\@\#$\%\^\&\*\(\)\{\}"]=>
! 132: string(27) "\[\]\!\@\#$\%\^\&\*\(\)\{\}"
! 133: }
! 134: -- Iteration 7 --
! 135: array(6) {
! 136: ["a\v\f"]=>
! 137: string(5) "a\v\f"
! 138: ["aaaa\r"]=>
! 139: string(6) "aaaa\r"
! 140: ["b"]=>
! 141: string(1) "b"
! 142: ["b\tbbb"]=>
! 143: string(6) "b\tbbb"
! 144: ["c"]=>
! 145: string(1) "c"
! 146: ["\[\]\!\@\#\$\%\^\&\*\(\)\{\}"]=>
! 147: string(28) "\[\]\!\@\#\$\%\^\&\*\(\)\{\}"
! 148: }
! 149: -- Iteration 8 --
! 150: array(4) {
! 151: ["
! 152: "]=>
! 153: string(1) "
! 154: "
! 155: ["hello world
! 156: The quick brown fox jumped over;
! 157: the lazy dog
! 158: This is a double quoted string"]=>
! 159: string(88) "hello world
! 160: The quick brown fox jumped over;
! 161: the lazy dog
! 162: This is a double quoted string"
! 163: ["hello
world
! 164: 1111 != 2222
! 165: heredoc
! 166: double quoted string. withdifferentwhitespaces"]=>
! 167: string(88) "hello
world
! 168: 1111 != 2222
! 169: heredoc
! 170: double quoted string. withdifferentwhitespaces"
! 171: ["11 < 12. 123 >22
! 172: 'single quoted string'
! 173: "double quoted string"
! 174: 2222 != 1111. 0000 = 0000
! 175: "]=>
! 176: string(90) "11 < 12. 123 >22
! 177: 'single quoted string'
! 178: "double quoted string"
! 179: 2222 != 1111. 0000 = 0000
! 180: "
! 181: }
! 182: -- Iteration 9 --
! 183: array(3) {
! 184: ["one"]=>
! 185: string(3) "one"
! 186: ["two"]=>
! 187: string(3) "two"
! 188: ["three"]=>
! 189: string(5) "three"
! 190: }
! 191: -- Iteration 10 --
! 192: array(3) {
! 193: [1]=>
! 194: int(1)
! 195: [2]=>
! 196: int(2)
! 197: [3]=>
! 198: int(3)
! 199: }
! 200: -- Iteration 11 --
! 201: array(4) {
! 202: [10]=>
! 203: int(10)
! 204: [20]=>
! 205: int(20)
! 206: [40]=>
! 207: int(40)
! 208: [30]=>
! 209: int(30)
! 210: }
! 211: -- Iteration 12 --
! 212: array(3) {
! 213: ["ten"]=>
! 214: string(3) "ten"
! 215: ["twenty"]=>
! 216: string(6) "twenty"
! 217: ["thirty"]=>
! 218: string(6) "thirty"
! 219: }
! 220: -- Iteration 13 --
! 221: array(3) {
! 222: [1]=>
! 223: int(1)
! 224: ["two"]=>
! 225: string(3) "two"
! 226: ["four"]=>
! 227: string(4) "four"
! 228: }
! 229: -- Iteration 14 --
! 230: array(2) {
! 231: ["null"]=>
! 232: string(4) "null"
! 233: [""]=>
! 234: NULL
! 235: }
! 236: -- Iteration 15 --
! 237: array(4) {
! 238: ["true"]=>
! 239: string(4) "true"
! 240: ["false"]=>
! 241: string(5) "false"
! 242: [""]=>
! 243: bool(false)
! 244: [1]=>
! 245: bool(true)
! 246: }
! 247: -- Iteration 16 --
! 248: array(2) {
! 249: ["emptys"]=>
! 250: string(6) "emptys"
! 251: [""]=>
! 252: string(0) ""
! 253: }
! 254: -- Iteration 17 --
! 255: array(2) {
! 256: [""]=>
! 257: bool(false)
! 258: [1]=>
! 259: bool(true)
! 260: }
! 261: -- Iteration 18 --
! 262: array(3) {
! 263: [4]=>
! 264: int(4)
! 265: [5]=>
! 266: int(5)
! 267: [6]=>
! 268: int(6)
! 269: }
! 270: -- Iteration 19 --
! 271: array(3) {
! 272: [10]=>
! 273: int(10)
! 274: [20]=>
! 275: int(20)
! 276: [3]=>
! 277: int(3)
! 278: }
! 279: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>