ID: 42341
Updated by: [EMAIL PROTECTED]
Reported By: steven dot mccoy at miru dot hk
-Status: Open
+Status: Bogus
Bug Type: Arrays related
Operating System: Ubuntu
PHP Version: 5.2.4RC2
New Comment:
Expected behaviour -> bogus.
Previous Comments:
------------------------------------------------------------------------
[2007-08-19 17:38:51] judas dot iscariote at gmail dot com
Use array_udiff with user supplied callback, the old behaviuor looks
wrong to me.
array_diff does compare with (string) $elem1 === (string) $elem2 and as
stdclass does not implement __toString() it emits a correct fatal error.
------------------------------------------------------------------------
[2007-08-19 12:22:09] steven dot mccoy at miru dot hk
Description:
------------
Upgrading from PHP 5.1.6-1 (Debian) to 5.2.1 (Ubuntu) a regression has
appeared in array_diff(). Comparisons now fail when an array member is
a stdClass object.
Also reproduced with 5.2.4RC1-dev.
Reproduce code:
---------------
<?php
$dogs = array();
$poodle = new stdClass;
$poodle->collar = 'red';
array_push($dogs, $poodle);
array_push($dogs, 'terrier');
array_push($dogs, 'dalmation');
$cat = array('persian' => array(1, 2, 3));
var_dump(array_diff($dogs, $cat));
?>
Expected result:
----------------
array(3) {
[0]=>
object(stdClass)#1 (1) {
["collar"]=>
string(3) "red"
}
[1]=>
string(7) "terrier"
[2]=>
string(9) "dalmation"
}
Actual result:
--------------
Catchable fatal error: Object of class stdClass could not be converted
to string in /miru/home/steve-o/- on line 11
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=42341&edit=1