array_unique() is perfect for removing duplicates in a string array, but
not so great for an array of objects.
SORT_REGULAR
was added to compare items without casting them to string.
However it uses the "==" comparison operator.
I see two improvements:
-
on a short term, improve the documentation to make it explicit that
the "==" operator will be used (the example with "(string) $elem1 ===
(string) $elem2" is misleading, "===" should be replaced with "==") -
on a long term, maybe add another option SORT_STRICT (like the $strict
parameter for in_array): that sort would use the strict comparison
operator "==="
Any thoughts about that?
Matthieu
On Tue, Aug 13, 2013 at 6:15 PM, Matthieu Napoli matthieu@mnapoli.frwrote:
array_unique()
is perfect for removing duplicates in a string array, but
not so great for an array of objects.
SORT_REGULAR
was added to compare items without casting them to string.
However it uses the "==" comparison operator.
Unless you have inserted those objects in the array using an identity map,
comparisons with == would be the most useful imho.
I see two improvements:
- on a short term, improve the documentation to make it explicit that the
"==" operator will be used (the example with "(string) $elem1 === (string)
$elem2" is misleading, "===" should be replaced with "==")
In fact, this is the behaviour if SORT_STRING
is given, so perhaps moving
that note to where the flags are described makes sense.
- on a long term, maybe add another option SORT_STRICT (like the $strict
parameter for in_array): that sort would use the strict comparison operator
"==="
+1 for that. In fact, I wouldn't mind having the option to use a custom
comparison function (though this function gets called for both the sorting
and pruning process).
:)
Any thoughts about that?
Matthieu
--
--
Tjerk