Edit report at https://bugs.php.net/bug.php?id=62977&edit=1
ID: 62977 Updated by: larue...@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: Cataphrac, that's why I didn't commit it, and the reason is because the comparable calss are not neighbouring after sorting. that's not much thing to do with the compare handler of specific handler. thanks Previous Comments: ------------------------------------------------------------------------ [2012-08-30 17:27:44] cataphr...@php.net 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. ------------------------------------------------------------------------ [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