ID: 39811 User updated by: wishm at bk dot ru Reported By: wishm at bk dot ru -Status: Bogus +Status: Closed Bug Type: Arrays related Operating System: win32 PHP Version: 4.4.4 New Comment:
ok the problem was just at this function's "feature" - multiple occurrences in first array are all treated the same way. I was wondered that applies to the associative arrays, too. So indexes are simply ignored. Screwed up a bit... array_diff_assoc fixes that :) Sorry for the bothering. Previous Comments: ------------------------------------------------------------------------ [2006-12-13 11:29:15] [EMAIL PROTECTED] There is even Russian translation of this particular page: http://ru.php.net/manual/ru/function.array-diff.php ------------------------------------------------------------------------ [2006-12-13 11:27:09] [EMAIL PROTECTED] >I think you dont understand the purpose of the array_diff() function. And I think you didn't read what I said and keep ignoring the docs. >The element is considered present if and only if its' >VALUE is equal to the same-named element's VALUE in the >second array! No. Read the documentation first. http://php.net/array_diff ------------------------------------------------------------------------ [2006-12-13 11:10:14] wishm at bk dot ru I think you dont understand the purpose of the array_diff() function. The element is considered present if and only if its' VALUE is equal to the same-named element's VALUE in the second array! Try array_diff(array("a"=>"1"),array("a"=>"2")). The element a = 1 does not present at second array so it will be returned. You didnt even tried to understand the essence of the bug! It is 100% PHP error when 2 is considered equal to ANY value under conditions I've described. Please fix that! ------------------------------------------------------------------------ [2006-12-13 10:06:39] [EMAIL PROTECTED] http://php.net/array_diff array_diff() returns an array containing **all the values of array1 that are not present in any of the other arguments*. In your case all values of $a are present in $b. ------------------------------------------------------------------------ [2006-12-13 07:49:54] wishm at bk dot ru Description: ------------ array_diff() function fails on comparing any array element with 2, when another pair of elements are both set to 2. Fails with that settings only. Reproduce code: --------------- <?php $a = array("2","2"); $b = array("2","any_symbols_here"); // same thing on $b = array("any_symbols_here","2"); print_r(array_diff($a,$b)); ?> Expected result: ---------------- Array ( [1] => 2 ) // second elements are not equal so function should return that element from $a array Actual result: -------------- Array ( ) //empty array - function failed ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=39811&edit=1