#10658 [Com]: array_diff does not work with classes
| From: | advice-oral643 at hotmail dot com | Date: | Tue, 20 Jul 2004 15:02:18 +0000 |
| Subject: | #10658 [Com]: array_diff does not work with classes | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-62838@lists.php.net to get a copy of this message | ||
ID: 10658
Comment by: advice-oral643 at hotmail dot com
Reported By: mihai dot negrea at spidernet dot co dot ro
Status: Bogus
Bug Type: Arrays related
Operating System: Linux
PHP Version: 4.0.5
New Comment:
<a href=http://outstanding--armed.da.ru>advice
oral</a>
Previous Comments:
------------------------------------------------------------------------
[2002-08-23 21:22:38] sniper@php.net
expected behaviour, not bug -> bogus.
------------------------------------------------------------------------
[2001-09-14 19:32:39] jeroen@php.net
The problem is that array_diff compares the string-represantation of
the arguments.
And in the case of objects, it is always "Object", and thus considered
equal.
This is currently expected behaviour, though it'd be be better if it
weren't... string-comparasation by array_diff & co is not
satisfactionary in case of objects. (nor arrays)
Suspended.
------------------------------------------------------------------------
[2001-05-04 03:36:46] mihai dot negrea at spidernet dot co dot ro
Consider the following script:
<?
class test
{
var $x;
var $y;
function test ()
{
$this->x = 0;
$this->y = 0;
}
function set ($x, $y)
{
$this->x = $x;
$this->y = $y;
}
}
$mumu = array();
$gaga = array();
for($i=0;$i<3;$i++)
{
$test = new test ();
$test->set($i, $i);
$mumu["xx".$i] = $test;
}
for($i=0;$i<5;$i++)
{
$test = new test ();
$test->set($i, $i);
$gaga["xx".$i] = $test;
}
$fff = array_diff($mumu, $gaga);
$ggg = array_diff($gaga, $mumu);
echo "<pre>";
print_r($fff);
echo "</pre>";
echo "<pre>";
print_r($ggg);
echo "</pre>";
?>
the following is the output from a server with php
4.0.4pl1:
Array
(
)
Array
(
[xx3] => test Object
(
[x] => 3
[y] => 3
)
[xx4] => test Object
(
[x] => 4
[y] => 4
)
)
and the following is the ouput with php 4.0.5:
Array
(
)
Array
(
)
the php.ini is the same on both servers.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=10658&edit=1