Ilia Alshanetsky wrote:
I've discussed this issue with Andrei at least a month ago (if not
longer) when the patch was originally added, and I believe that the
introduced behavior is the correct one.
I've discussed this issue with Andrei at least a month ago (if not
longer) when the patch was originally added, and I believe that the
introduced behavior is the correct one.
At least, as array_unique() was not capable of dealing with objects
before the Andrei's patch, every existing code should use it with
strings, not objects.
If SORT_REGULAR could handle objects as well as strings in the same
manner as SORT_STRING I wouldn't see any problem, although it cannot.
Moriyoshi
On 14-Feb-09, at 9:12 PM, Moriyoshi Koizumi wrote:
So, what are RM's thoughts on this? My points are:
1. Making SORT_REGULAR default *actually* broke existing code.
2. Adding the second argument addressed the problem enough that the
elements are treated indifferently when used with objects.
Regards,
Moriyoshi
Moriyoshi Koizumi wrote:
Ilia AlshanetskySo, what are RM's thoughts on this? My points are:
1. Making SORT_REGULAR default *actually* broke existing code.
2. Adding the second argument addressed the problem enough that the
elements are treated indifferently when used with objects.
Regards,
Moriyoshi
Moriyoshi Koizumi wrote:
Whatever reasoning, I don't think it's a good idea to revert someone
else's patch before discussing anything.
Aside from this, I agree with you the old behavior is that stupid, but
BC should always be honored.
Moriyoshi
Andrei Zmievski wrote:
else's patch before discussing anything.
Aside from this, I agree with you the old behavior is that stupid, but
BC should always be honored.
Moriyoshi
Andrei Zmievski wrote:
Don't do this please. Why did you feel the need to go back and
change my
patch including the NEWS entry? I knew what I was doing when I set the
default behavior to SORT_REGULAR and this was discussed with both 5.3
and 5.2 RMs. With your change it'l back to the stupid old behavior of:
$array = array(new stdClass(), new stdClass(), new Foo());
$array = array_unique($array);
And now $array has only 1 element. I really hate having tell PHP not to
be stupid, rather than having it default to being smart.
I'm going to revert this.
-Andrei
Moriyoshi Koizumi wrote:
change my
patch including the NEWS entry? I knew what I was doing when I set the
default behavior to SORT_REGULAR and this was discussed with both 5.3
and 5.2 RMs. With your change it'l back to the stupid old behavior of:
$array = array(new stdClass(), new stdClass(), new Foo());
$array = array_unique($array);
And now $array has only 1 element. I really hate having tell PHP not to
be stupid, rather than having it default to being smart.
I'm going to revert this.
-Andrei
Moriyoshi Koizumi wrote:
moriyoshi Thu Feb 12 18:29:15 2009 UTC
Modified files: /php-src/ext/standard array.c
Log:
* Fix bug #47370 (BC breakage of array_unique())
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.471&r2=1.472&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.471
php-src/ext/standard/array.c:1.472
--- php-src/ext/standard/array.c:1.471 Mon Feb 9 10:47:19 2009
+++ php-src/ext/standard/array.c Thu Feb 12 18:29:15 2009
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: array.c,v 1.471 2009/02/09 10:47:19 dmitry Exp $ */
+/* $Id: array.c,v 1.472 2009/02/12 18:29:15 moriyoshi Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -2924,7 +2924,7 @@
};
struct bucketindex *arTmp, *cmpdata, *lastkept;
unsigned int i;
- long sort_type = PHP_SORT_REGULAR;
+ long sort_type = PHP_SORT_STRING;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|l",
&array, &sort_type) == FAILURE) {
return;
Modified files: /php-src/ext/standard array.c
Log:
* Fix bug #47370 (BC breakage of array_unique())
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.471&r2=1.472&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.471
php-src/ext/standard/array.c:1.472
--- php-src/ext/standard/array.c:1.471 Mon Feb 9 10:47:19 2009
+++ php-src/ext/standard/array.c Thu Feb 12 18:29:15 2009
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: array.c,v 1.471 2009/02/09 10:47:19 dmitry Exp $ */
+/* $Id: array.c,v 1.472 2009/02/12 18:29:15 moriyoshi Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -2924,7 +2924,7 @@
};
struct bucketindex *arTmp, *cmpdata, *lastkept;
unsigned int i;
- long sort_type = PHP_SORT_REGULAR;
+ long sort_type = PHP_SORT_STRING;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|l",
&array, &sort_type) == FAILURE) {
return;