#10658 [Com]: array_diff does not work with classes

From: 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

« previous php.bugs (#62838) next »