From: Raghubansh Kumar Date: Fri, 4 Jan 2008 14:02:27 +0000 (+0000) Subject: New testcases for array_diff() function X-Git-Tag: RELEASE_1_3_1~422 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0b26f6fe7e5e624376d8db688e8e1bc9fb7b0a26;p=php New testcases for array_diff() function --- diff --git a/ext/standard/tests/array/array_diff_basic.phpt b/ext/standard/tests/array/array_diff_basic.phpt new file mode 100644 index 0000000000..30aead657c --- /dev/null +++ b/ext/standard/tests/array/array_diff_basic.phpt @@ -0,0 +1,116 @@ +--TEST-- +Test array_diff() function : basic functionality +--FILE-- + 1, 'two' => 2, 'three' => 3, 'four' => 4); +$array_assoc_int2 = array ('three' => 3, 'four' => 4, 'five' => 5, 'six' => 6); + +echo "-- Test associative array with strings as keys and integers as elements --\n"; +var_dump(array_diff($array_assoc_int1, $array_assoc_int2)); +var_dump(array_diff($array_assoc_int2, $array_assoc_int1)); + +//Test associative array with strings as keys and elements +$array_assoc_str1 = array ('one' => 'un', 'two' => 'deux', 'three' => 'trois', 'four' => 'quatre'); +$array_assoc_str2 = array ('three' => 'trois', 'four' => 'quatre', 'five' => 'cinq', 'six' => 'six'); + +echo "-- Test associative array with strings as keys and integers as elements --\n"; +var_dump(array_diff($array_assoc_str1, $array_assoc_str2)); +var_dump(array_diff($array_assoc_str2, $array_assoc_str1)); + +echo "-- Test array_diff with more than 2 arguments --\n"; +var_dump(array_diff($array_int1, $array_int2, $array_string1, $array_string2)); + +echo "Done"; +?> +--EXPECTF-- +*** Testing array_diff() : basic functionality *** +-- Test indexed array with integers as elements -- +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} +array(2) { + [2]=> + int(5) + [3]=> + int(6) +} +-- Test indexed array with strings as elements -- +array(2) { + [0]=> + string(3) "one" + [1]=> + string(3) "two" +} +array(2) { + [2]=> + string(4) "five" + [3]=> + string(3) "six" +} +-- Test associative array with strings as keys and integers as elements -- +array(2) { + ["one"]=> + int(1) + ["two"]=> + int(2) +} +array(2) { + ["five"]=> + int(5) + ["six"]=> + int(6) +} +-- Test associative array with strings as keys and integers as elements -- +array(2) { + ["one"]=> + string(2) "un" + ["two"]=> + string(4) "deux" +} +array(2) { + ["five"]=> + string(4) "cinq" + ["six"]=> + string(3) "six" +} +-- Test array_diff with more than 2 arguments -- +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} +Done diff --git a/ext/standard/tests/array/array_diff_error.phpt b/ext/standard/tests/array/array_diff_error.phpt new file mode 100644 index 0000000000..019cffb1ef --- /dev/null +++ b/ext/standard/tests/array/array_diff_error.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test array_diff() function : error conditions - too few arguments passed to function +--FILE-- + +--EXPECTF-- +*** Testing array_diff() : error conditions *** + +-- Testing array_diff() function with zero arguments -- + +Warning: array_diff(): at least 2 parameters are required, 0 given in %s on line %d +NULL + +-- Testing array_diff() function with less than expected no. of arguments -- + +Warning: array_diff(): at least 2 parameters are required, 1 given in %s on line %d +NULL +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_variation1.phpt b/ext/standard/tests/array/array_diff_variation1.phpt new file mode 100644 index 0000000000..f9a34b0a59 --- /dev/null +++ b/ext/standard/tests/array/array_diff_variation1.phpt @@ -0,0 +1,208 @@ +--TEST-- +Test array_diff() function : usage variations - unexpected values for 'arr1' argument +--FILE-- + +--EXPECTF-- +*** Testing array_diff() : usage variations *** + +-- Iteration 1 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 2 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 3 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 4 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 5 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 6 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 7 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 8 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 9 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 10 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 11 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 12 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 13 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 14 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 15 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 16 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 17 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 18 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 19 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 20 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 21 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 22 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 23 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 24 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 25 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL + +-- Iteration 26 -- +Warning: array_diff(): Argument #1 is not an array in %s on line %d +NULL +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_variation10.phpt b/ext/standard/tests/array/array_diff_variation10.phpt new file mode 100644 index 0000000000..9442b946d9 --- /dev/null +++ b/ext/standard/tests/array/array_diff_variation10.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test array_diff() function : usage variations - binary safe checking +--FILE-- + "hello", + "str2" => "world"); + +$array2 = array( b"1" => 'hello', + b"world", + "hello", + 'test'); + +var_dump(array_diff($array1, $array2)); +var_dump(array_diff($array2, $array1)); + +echo "Done"; +?> +--EXPECTF-- +*** Testing array_diff() : usage variations *** +array(1) { + [0]=> + string(1) "1" +} +array(1) { + [4]=> + string(4) "test" +} +Done diff --git a/ext/standard/tests/array/array_diff_variation2.phpt b/ext/standard/tests/array/array_diff_variation2.phpt new file mode 100644 index 0000000000..be68c40c2f --- /dev/null +++ b/ext/standard/tests/array/array_diff_variation2.phpt @@ -0,0 +1,207 @@ +--TEST-- +Test array_diff() function : usage variations - unexpected values for 'arr2' argument +--FILE-- + +--EXPECTF-- +*** Testing array_diff() : usage variations *** + +-- Iteration 1 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 2 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 3 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 4 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 5 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 6 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 7 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 8 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 9 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 10 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 11 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 12 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 13 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 14 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 15 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 16 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 17 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 18 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 19 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 20 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 21 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 22 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 23 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 24 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 25 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL + +-- Iteration 26 -- +Warning: array_diff(): Argument #2 is not an array in %s on line %d +NULL +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_variation3.phpt b/ext/standard/tests/array/array_diff_variation3.phpt new file mode 100644 index 0000000000..84f73fd287 --- /dev/null +++ b/ext/standard/tests/array/array_diff_variation3.phpt @@ -0,0 +1,190 @@ +--TEST-- +Test array_diff() function : usage variations - array with different data types as values +--FILE-- + array(), + +/*2*/ +"int" => array( + // int data + 0, + 1, + 12345, + -2345), + +/*3*/ +"float" => array( + // float data + 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5), + +/*4*/ +"null" => array( + // null data + NULL, + null), + +/*5*/ +"boolean" => array( + // boolean data + true, + false, + TRUE, + FALSE), + +/*6*/ +"empty" => array( + // empty data + "", + ''), + +/*7*/ +"string" => array( + // string data + "string", + 'string', + $heredoc), + +/*8*/ +"binary" => array( + // binary data + b"binary", + (binary)"binary"), + +/*9*/ +"undefined" => array( + // undefined data + @$undefined_var), + +/*10*/ +"unset" => array( + // unset data + @$unset_var) +); + +// loop through each element of the array for arr1 +$iterator = 1; +foreach($values as $value) { + echo "\n Iteration: $iterator \n"; + var_dump( array_diff($value, $array) ); + $iterator++; +}; + +echo "Done"; +?> +--EXPECTF-- +*** Testing array_diff() : usage variations *** + + Iteration: 1 +array(0) { +} + + Iteration: 2 +array(3) { + [0]=> + int(0) + [2]=> + int(12345) + [3]=> + int(-2345) +} + + Iteration: 3 +array(5) { + [0]=> + float(10.5) + [1]=> + float(-10.5) + [2]=> + float(123456789000) + [3]=> + float(1.23456789E-9) + [4]=> + float(0.5) +} + + Iteration: 4 +array(2) { + [0]=> + NULL + [1]=> + NULL +} + + Iteration: 5 +array(2) { + [1]=> + bool(false) + [3]=> + bool(false) +} + + Iteration: 6 +array(2) { + [0]=> + string(0) "" + [1]=> + string(0) "" +} + + Iteration: 7 +array(3) { + [0]=> + string(6) "string" + [1]=> + string(6) "string" + [2]=> + string(17) "This is a heredoc" +} + + Iteration: 8 +array(2) { + [0]=> + string(6) "binary" + [1]=> + string(6) "binary" +} + + Iteration: 9 +array(1) { + [0]=> + NULL +} + + Iteration: 10 +array(1) { + [0]=> + NULL +} +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_variation4.phpt b/ext/standard/tests/array/array_diff_variation4.phpt new file mode 100644 index 0000000000..75b01adaa1 --- /dev/null +++ b/ext/standard/tests/array/array_diff_variation4.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test array_diff() function : usage variations - array with different data types as values +--FILE-- + array(), + +/*2*/ +"int" => array( + // int data + 0, + 1, + 12345, + -2345), + +/*3*/ +"float" => array( + // float data + 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5), + +/*4*/ +"null" => array( + // null data + NULL, + null), + +/*5*/ +"boolean" => array( + // boolean data + true, + false, + TRUE, + FALSE), + +/*6*/ +"empty" => array( + // empty data + "", + ''), + +/*7*/ +"string" => array( + // string data + "string", + 'string', + $heredoc), + +/*8*/ +"binary" => array( + // binary data + b"binary", + (binary)"binary"), + +/*9*/ +"undefined" => array( + // undefined data + @$undefined_var), + +/*10*/ +"unset" => array( + // unset data + @$unset_var) +); + +// loop through each element of the array for $arr2 +$iterator = 1; +foreach($values as $value) { + echo "\n Iteration: $iterator \n"; + var_dump( array_diff($array, $value) ); + $iterator++; +}; + +echo "Done"; +?> +--EXPECTF-- +*** Testing array_diff() : usage variations *** + + Iteration: 1 +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + + Iteration: 2 +array(1) { + [1]=> + int(2) +} + + Iteration: 3 +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + + Iteration: 4 +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + + Iteration: 5 +array(1) { + [1]=> + int(2) +} + + Iteration: 6 +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + + Iteration: 7 +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + + Iteration: 8 +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + + Iteration: 9 +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + + Iteration: 10 +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_variation5.phpt b/ext/standard/tests/array/array_diff_variation5.phpt new file mode 100644 index 0000000000..cb6b5d3dab --- /dev/null +++ b/ext/standard/tests/array/array_diff_variation5.phpt @@ -0,0 +1,119 @@ +--TEST-- +Test array_diff() function : usage variations - comparing integers, float +and string array values +--FILE-- + +--EXPECTF-- +*** Testing array_diff() : usage variations *** +-- Compare integers and floats: -- +array(0) { +} +array(0) { +} +-- Compare integers and strings containing an integers: -- +array(0) { +} +array(0) { +} +-- Compare integers and strings containing floats: -- +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +array(3) { + [0]=> + string(4) "1.00" + [1]=> + string(4) "2.00" + [2]=> + string(4) "3.00" +} +-- Compare floats and strings containing integers: -- +array(0) { +} +array(0) { +} +-- Compare floats and strings containing floats: -- +array(3) { + [0]=> + float(1) + [1]=> + float(2) + [2]=> + float(3) +} +array(3) { + [0]=> + string(4) "1.00" + [1]=> + string(4) "2.00" + [2]=> + string(4) "3.00" +} +-- Compare strings containing integers and strings containing floats: -- +array(3) { + [0]=> + string(1) "1" + [1]=> + string(1) "2" + [2]=> + string(1) "3" +} +array(3) { + [0]=> + string(4) "1.00" + [1]=> + string(4) "2.00" + [2]=> + string(4) "3.00" +} +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_variation6.phpt b/ext/standard/tests/array/array_diff_variation6.phpt new file mode 100644 index 0000000000..8ea84bb9da --- /dev/null +++ b/ext/standard/tests/array/array_diff_variation6.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test array_diff() function : usage variations - array containing duplicate keys and values +--FILE-- + 'd', 'b'); //duplicate key (0), duplicate value (b) +$array_assoc = array ('2' => 'c', //same key=>value pair, different order + '1' => 'b', + '0' => 'a', + 'b' => '3', //key and value from array_index swapped + 'c' => 2); //same as above, using integer + +var_dump(array_diff($array_index, $array_assoc)); +var_dump(array_diff($array_assoc, $array_index)); + +echo "Done"; +?> +--EXPECTF-- +*** Testing array_diff() : usage variations *** +array(1) { + [0]=> + string(1) "d" +} +array(3) { + [0]=> + string(1) "a" + ["b"]=> + string(1) "3" + ["c"]=> + int(2) +} +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_variation7.phpt b/ext/standard/tests/array/array_diff_variation7.phpt new file mode 100644 index 0000000000..c53cbb3d1c --- /dev/null +++ b/ext/standard/tests/array/array_diff_variation7.phpt @@ -0,0 +1,95 @@ +--TEST-- +Test array_diff() function : usage variations - arrays containing referenced variables +--FILE-- + + +--EXPECTF-- + +*** Testing array_diff() : usage variations *** +-- Basic Comparison -- +array(3) { + [0]=> + string(2) "&a" + [1]=> + string(1) "b" + [2]=> + string(1) "c" +} +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +-- $a changed -- +array(3) { + [0]=> + string(2) "&a" + [1]=> + string(1) "b" + [2]=> + string(1) "c" +} +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +-- Arrays referenced to each other -- +array(0) { +} +array(0) { +} +-- $arr1 changed -- +array(0) { +} +array(0) { +} +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_variation8.phpt b/ext/standard/tests/array/array_diff_variation8.phpt new file mode 100644 index 0000000000..99f9614d72 --- /dev/null +++ b/ext/standard/tests/array/array_diff_variation8.phpt @@ -0,0 +1,207 @@ +--TEST-- +Test array_diff() function : usage variations - associative arrays contianing different data types +--FILE-- + '1', 'b' => '2', 'c' => '3'); + +// get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// get a class +class classA +{ + public function __toString() { + return "Class A object"; + } +} + +// get a heredoc string +$heredoc = << 0, '1' => 0), + array("one" => 1, 'two' => 2, "three" => 1, 4 => 1), + + // arrays with float values +/*3*/ array("float1" => 2.3333, "float2" => 2.3333), + array("f1" => 1.2, 'f2' => 3.33, 3 => 4.89999922839999, 'f4' => 1.2), + + // arrays with string values +/*5*/ array(111 => "\tHello", "red" => "col\tor", 2 => "\v\fworld", 3.3 => "\tHello"), + array(111 => '\tHello', "red" => 'col\tor', 2 => '\v\fworld', 3.3 => '\tHello'), + array(1 => "hello", "heredoc" => $heredoc, $heredoc), + + // array with object, unset variable and resource variable +/*8*/ array(11 => new classA(), "unset" => @$unset_var, "resource" => $fp, new classA(), $fp), +); + +// loop through each sub-array of $inputs to check the behavior of array_unique() +$iterator = 1; +foreach($inputs as $input) { + echo "-- Iteration $iterator --\n"; + var_dump( array_diff($array, $input) ); + var_dump( array_diff($input, $array) ); + $iterator++; +} + +fclose($fp); + +echo "Done"; +?> +--EXPECTF-- +*** Testing array_diff() : usage variations *** +-- Iteration 1 -- +array(3) { + ["a"]=> + string(1) "1" + ["b"]=> + string(1) "2" + ["c"]=> + string(1) "3" +} +array(2) { + [0]=> + int(0) + [1]=> + int(0) +} +-- Iteration 2 -- +array(1) { + ["c"]=> + string(1) "3" +} +array(0) { +} +-- Iteration 3 -- +array(3) { + ["a"]=> + string(1) "1" + ["b"]=> + string(1) "2" + ["c"]=> + string(1) "3" +} +array(2) { + ["float1"]=> + float(2.3333) + ["float2"]=> + float(2.3333) +} +-- Iteration 4 -- +array(3) { + ["a"]=> + string(1) "1" + ["b"]=> + string(1) "2" + ["c"]=> + string(1) "3" +} +array(4) { + ["f1"]=> + float(1.2) + ["f2"]=> + float(3.33) + [3]=> + float(4.8999992284) + ["f4"]=> + float(1.2) +} +-- Iteration 5 -- +array(3) { + ["a"]=> + string(1) "1" + ["b"]=> + string(1) "2" + ["c"]=> + string(1) "3" +} +array(4) { + [111]=> + string(6) " Hello" + ["red"]=> + string(6) "col or" + [2]=> + string(7) " world" + [3]=> + string(6) " Hello" +} +-- Iteration 6 -- +array(3) { + ["a"]=> + string(1) "1" + ["b"]=> + string(1) "2" + ["c"]=> + string(1) "3" +} +array(4) { + [111]=> + string(7) "\tHello" + ["red"]=> + string(7) "col\tor" + [2]=> + string(9) "\v\fworld" + [3]=> + string(7) "\tHello" +} +-- Iteration 7 -- +array(3) { + ["a"]=> + string(1) "1" + ["b"]=> + string(1) "2" + ["c"]=> + string(1) "3" +} +array(3) { + [1]=> + string(5) "hello" + ["heredoc"]=> + string(11) "Hello world" + [2]=> + string(11) "Hello world" +} +-- Iteration 8 -- +array(3) { + ["a"]=> + string(1) "1" + ["b"]=> + string(1) "2" + ["c"]=> + string(1) "3" +} +array(5) { + [11]=> + object(classA)#%d (0) { + } + ["unset"]=> + NULL + ["resource"]=> + resource(%d) of type (stream) + [12]=> + object(classA)#%d (0) { + } + [13]=> + resource(%d) of type (stream) +} +Done diff --git a/ext/standard/tests/array/array_diff_variation9.phpt b/ext/standard/tests/array/array_diff_variation9.phpt new file mode 100644 index 0000000000..58d9c201ba --- /dev/null +++ b/ext/standard/tests/array/array_diff_variation9.phpt @@ -0,0 +1,100 @@ +--TEST-- +Test array_diff() function : usage variations - multidimensional arrays +--FILE-- + array (1, 2, 3), + 'sub_array2' => array ('a', 'b', 'c')); +$array2 = array('sub_arraya' => array (1, 3, 5), + 'sub_arrayb' => array ('a', 'z', 'y')); + +echo "-- Compare two 2-D arrays --\n"; +var_dump(array_diff($array1, $array2)); +var_dump(array_diff($array2, $array1)); + +echo "\n-- Compare subarrays from two 2-D arrays --\n"; +var_dump(array_diff($array1['sub_array1'], $array2['sub_arraya'])); +var_dump(array_diff($array2['sub_arraya'], $array1['sub_array1'])); + +var_dump(array_diff($array1['sub_array2'], $array2['sub_arrayb'])); +var_dump(array_diff($array2['sub_arrayb'], $array1['sub_array1'])); + +echo "\n-- Compare a subarray from one 2-D array and one 2-D array --\n"; +var_dump(array_diff($array1['sub_array1'], $array2)); +var_dump(array_diff($array1, $array2['sub_arraya'])); + +echo "Done"; +?> +--EXPECTF-- +*** Testing array_diff() : usage variations *** +-- Compare two 2-D arrays -- +array(0) { +} +array(0) { +} + +-- Compare subarrays from two 2-D arrays -- +array(1) { + [1]=> + int(2) +} +array(1) { + [2]=> + int(5) +} +array(2) { + [1]=> + string(1) "b" + [2]=> + string(1) "c" +} +array(3) { + [0]=> + string(1) "a" + [1]=> + string(1) "z" + [2]=> + string(1) "y" +} + +-- Compare a subarray from one 2-D array and one 2-D array -- +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +array(2) { + ["sub_array1"]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } + ["sub_array2"]=> + array(3) { + [0]=> + string(1) "a" + [1]=> + string(1) "b" + [2]=> + string(1) "c" + } +} +Done \ No newline at end of file