1--TEST-- 2Test array_diff_assoc() function : usage variations - arrays with different data types as keys 3--FILE-- 4 5<?php 6/* Prototype : array array_diff_assoc(array $arr1, array $arr2 [, array ...]) 7 * Description: Returns the entries of arr1 that have values which are not present 8 * in any of the others arguments but do additional checks whether the keys are equal 9 * Source code: ext/standard/array.c 10 */ 11 12/* 13 * Test how array_diff_assoc() compares arrays containing different data types 14 * as keys 15 */ 16 17echo "\n*** Testing array_diff_assoc() : usage variations ***\n"; 18 19$array = array(1, 2, 3); 20 21//get an unset variable 22$unset_var = 10; 23unset ($unset_var); 24 25// heredoc string 26$heredoc = <<<EOT 27hello world 28EOT; 29 30//Different data types as keys to be passed to $arr1 argument 31$inputs = array( 32 33 // int data 34/*1*/ 35'int' => array( 36 0 => 'zero', 37 1 => 'one', 38 12345 => 'positive', 39 -2345 => 'negative'), 40 41 // float data 42/*2*/ 43'float' => array( 44 10.5 => 'float 1', 45 -10.5 => 'float 2', 46 .5 => 'float 3'), 47 48 // null data 49/*3*/ 50'null' => array( 51 NULL => 'null 1', 52 null => 'null 2'), 53 54 // boolean data 55/*4*/ 56'bool' => array( 57 true => 'boolt', 58 false => 'boolf', 59 TRUE => 'boolT', 60 FALSE => 'boolF'), 61 62 // empty data 63/*5*/ 64'empty' => array( 65 "" => 'emptyd', 66 '' => 'emptys'), 67 68 // string data 69/*6*/ 70'string' => array( 71 "string" => 'stringd', 72 'string' => 'strings', 73 $heredoc => 'stringh'), 74 75 // binary data 76/*7*/ 77'binary' => array( 78 b"binary1" => 'binary 1', 79 (binary)"binary2" => 'binary 2'), 80 81 // undefined data 82/*8*/ 83'undefined' => array( 84 @$undefined_var => 'undefined'), 85 86 // unset data 87/*9*/ 88'unset' => array( 89 @$unset_var => 'unset'), 90 91); 92 93// loop through each element of $inputs to check the behavior of array_diff_assoc 94$iterator = 1; 95foreach($inputs as $key => $input) { 96 echo "\n-- Iteration $iterator --\n"; 97 var_dump( array_diff_assoc($input, $array)); 98 $iterator++; 99}; 100 101echo "Done"; 102?> 103 104--EXPECTF-- 105 106*** Testing array_diff_assoc() : usage variations *** 107 108-- Iteration 1 -- 109array(4) { 110 [0]=> 111 string(4) "zero" 112 [1]=> 113 string(3) "one" 114 [12345]=> 115 string(8) "positive" 116 [-2345]=> 117 string(8) "negative" 118} 119 120-- Iteration 2 -- 121array(3) { 122 [10]=> 123 string(7) "float 1" 124 [-10]=> 125 string(7) "float 2" 126 [0]=> 127 string(7) "float 3" 128} 129 130-- Iteration 3 -- 131array(1) { 132 [""]=> 133 string(6) "null 2" 134} 135 136-- Iteration 4 -- 137array(2) { 138 [1]=> 139 string(5) "boolT" 140 [0]=> 141 string(5) "boolF" 142} 143 144-- Iteration 5 -- 145array(1) { 146 [""]=> 147 string(6) "emptys" 148} 149 150-- Iteration 6 -- 151array(2) { 152 ["string"]=> 153 string(7) "strings" 154 ["hello world"]=> 155 string(7) "stringh" 156} 157 158-- Iteration 7 -- 159array(2) { 160 ["binary1"]=> 161 string(8) "binary 1" 162 ["binary2"]=> 163 string(8) "binary 2" 164} 165 166-- Iteration 8 -- 167array(1) { 168 [""]=> 169 string(9) "undefined" 170} 171 172-- Iteration 9 -- 173array(1) { 174 [""]=> 175 string(5) "unset" 176} 177Done