1--TEST-- 2Test array_diff() function : usage variations - arrays containing referenced variables 3--FILE-- 4<?php 5/* Prototype : array array_diff(array $arr1, array $arr2 [, array ...]) 6 * Description: Returns the entries of $arr1 that have values which are not 7 * present in any of the others arguments. 8 * Source code: ext/standard/array.c 9 */ 10 11/* 12 * Test how array_diff compares arrays that 13 * 1. Contain referenced variables 14 * 2. Have been referenced to each other 15 */ 16 17echo "*** Testing array_diff() : usage variations ***\n"; 18$a = 'a'; 19 20$arr1 = array ("&$a", 'b', 'c'); 21$arr2 = array (1, 2, 3); 22echo "-- Basic Comparison --\n"; 23var_dump(array_diff($arr1, $arr2)); 24var_dump(array_diff($arr2, $arr1)); 25 26$a = 1; 27 28echo "-- \$a changed --\n"; 29var_dump(array_diff($arr1, $arr2)); 30var_dump(array_diff($arr2, $arr1)); 31 32 33$arr2 = &$arr1; 34echo "-- Arrays referenced to each other --\n"; 35var_dump(array_diff($arr1, $arr2)); 36var_dump(array_diff($arr2, $arr1)); 37 38 39$arr1 = array('x', 'y', 'z'); 40echo "-- \$arr1 changed --\n"; 41var_dump(array_diff($arr1, $arr2)); 42var_dump(array_diff($arr2, $arr1)); 43 44 45echo "Done"; 46?> 47--EXPECTF-- 48*** Testing array_diff() : usage variations *** 49-- Basic Comparison -- 50array(3) { 51 [0]=> 52 string(2) "&a" 53 [1]=> 54 string(1) "b" 55 [2]=> 56 string(1) "c" 57} 58array(3) { 59 [0]=> 60 int(1) 61 [1]=> 62 int(2) 63 [2]=> 64 int(3) 65} 66-- $a changed -- 67array(3) { 68 [0]=> 69 string(2) "&a" 70 [1]=> 71 string(1) "b" 72 [2]=> 73 string(1) "c" 74} 75array(3) { 76 [0]=> 77 int(1) 78 [1]=> 79 int(2) 80 [2]=> 81 int(3) 82} 83-- Arrays referenced to each other -- 84array(0) { 85} 86array(0) { 87} 88-- $arr1 changed -- 89array(0) { 90} 91array(0) { 92} 93Done 94