Req #54259 [Fbk->NoF]: Add SORT_NONE type to array_mulitsort
| From: | php-bugs at lists dot php dot net | Date: | Sun, 21 Feb 2021 04:22:08 +0000 |
| Subject: | Req #54259 [Fbk->NoF]: Add SORT_NONE type to array_mulitsort | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-232299@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=54259&edit=1
ID: 54259
Updated by: php-bugs@lists.php.net
Reported by: brad dot froehle at gmail dot com
Summary: Add SORT_NONE type to array_mulitsort
-Status: Feedback
+Status: No Feedback
Type: Feature/Change Request
Package: Arrays related
Operating System: OS X 10.6
PHP Version: 5.3.5
Assigned To: cmb
Private report: N
New Comment:
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.
Previous Comments:
------------------------------------------------------------------------
[2021-02-12 16:36:26] cmb@php.net
I fail to see why you couldn't use SORT_REGULAR[1].
[1] <https://3v4l.org/iFDlV>
------------------------------------------------------------------------
[2011-03-15 20:49:12] brad dot froehle at gmail dot com
Description:
------------
It'd be useful to have a SORT_NONE option in the array_multisort function. This
would allow users to specify that they do not care to sort along a particular
index.
In the sample code below, I've attached one possible use arising in Drupal. (See
http://drupal.org/node/972536). Generically, we want to
sort some array ($menu)
before inserting it into the database. To do so, we first compute the desired
sort order ($sort) and then call the array_multisort function as
array_multisort($sort, SORT_NUMERIC, $menu);
This works great, sorting $menu according to the sort order in $sort, however if
$menu contains any objects the array_multisort function throws an error (Notice:
Object of class stdClass could not be converted to int in ...).
I'm proposing the addition of a SORT_NONE option so that the function call could
instead be
array_multisort($sort, SORT_NUMERIC, $menu, SORT_NONE);
This would not throw an error since no comparisons would be done with the
attributes of $menu.
Implementing this should be relatively straightforward, I would imagine.
Test script:
---------------
$sort = array(
'A' => 2,
'A' => 1,
'B' => 1,
);
$menu['A'] = array(
'access' => array(1),
);
$menu['B'] = array(
'access' => array((object) array('a', 'b')),
);
$menu['C'] = array(
'access' => array(0),
);
array_multisort($sort, SORT_NUMERIC, $menu, SORT_NONE);
Expected result:
----------------
$sort =
Array
(
[C] => 1
[B] => 1
[A] => 2
)
$menu =
Array
(
[C] => Array
(
[access] => Array
(
[0] => 0
)
)
[B] => Array
(
[access] => Array
(
[0] => stdClass Object
(
[0] => a
[1] => b
)
)
)
[A] => Array
(
[access] => Array
(
[0] => 1
)
)
)
Actual result:
--------------
(Not applicable, since this is a feature request).
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=54259&edit=1