|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #54259 Add SORT_NONE type to array_mulitsort
Submitted: 2011-03-15 20:49 UTC Modified: -
Avg. Score:4.0 ± 0.0
Reproduced:2 of 2 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: brad dot froehle at gmail dot com Assigned:
Status: Open Package: Arrays related
PHP Version: 5.3.5 OS: OS X 10.6
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Bug Type:
From: brad dot froehle at gmail dot com
New email:
PHP Version: OS:


 [2011-03-15 20:49 UTC] brad dot froehle at gmail dot com
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 

In the sample code below, I've attached one possible use arising in Drupal. (See  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 =
    [C] => 1
    [B] => 1
    [A] => 2

$menu =
    [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).


Add a Patch

Pull Requests

Add a Pull Request

PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Tue Jul 07 04:01:28 2020 UTC