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

Reply via email to