Edit report at https://bugs.php.net/bug.php?id=62977&edit=1
ID: 62977 Updated by: cataphr...@php.net Reported by: ladislav at marek dot su Summary: array_unique() misbehaves with array of DateTimes Status: Assigned Type: Bug Package: Class/Object related Operating System: Linux PHP Version: 5.4Git-2012-08-30 (Git) Assigned To: laruence Block user comment: N Private report: N New Comment: laruuence: The patch is very strange. Why are making all the elements of the same class being compared equal? Objects can be compared. Perhaps you should fix the DateTime's compare_objects() object handler. Previous Comments: ------------------------------------------------------------------------ [2012-08-30 15:52:05] larue...@php.net The following patch has been added/updated: Patch Name: bug62977.patch Revision: 1346341925 URL: https://bugs.php.net/patch-display.php?bug=62977&patch=bug62977.patch&revision=1346341925 ------------------------------------------------------------------------ [2012-08-30 13:24:49] ladislav at marek dot su Description: ------------ array_unique() returns duplicates for array which contains objects with DateTime instances. Test script: --------------- <?php class Foo { public $dt; function __construct($dt) { $this->dt = $dt; } } $foo = new Foo(new DateTime); $std = new stdClass; $arr = [$foo, $foo, $std, $std, $std]; var_dump(array_unique($arr, SORT_REGULAR)); Expected result: ---------------- array(4) { [0]=> object(Foo)#1 (1) { ["dt"]=> object(DateTime)#2 (3) { ["date"]=> string(19) "2012-08-30 15:18:01" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Prague" } } [2]=> object(stdClass)#3 (0) { } } Actual result: -------------- array(4) { [0]=> object(Foo)#1 (1) { ["dt"]=> object(DateTime)#2 (3) { ["date"]=> string(19) "2012-08-30 15:18:01" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Prague" } } [1]=> object(Foo)#1 (1) { ["dt"]=> object(DateTime)#2 (3) { ["date"]=> string(19) "2012-08-30 15:18:01" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Prague" } } [2]=> object(stdClass)#3 (0) { } [4]=> object(stdClass)#3 (0) { } } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=62977&edit=1