Req #54259 [Opn->Fbk]: Add SORT_NONE type to array_mulitsort

From: Date: Fri, 12 Feb 2021 16:36:26 +0000
Subject: Req #54259 [Opn->Fbk]: Add SORT_NONE type to array_mulitsort
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-232103@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: cmb@php.net Reported by: brad dot froehle at gmail dot com Summary: Add SORT_NONE type to array_mulitsort -Status: Open +Status: Feedback Type: Feature/Change Request Package: Arrays related Operating System: OS X 10.6 PHP Version: 5.3.5 -Assigned To: +Assigned To: cmb Block user comment: N Private report: N New Comment: I fail to see why you couldn't use SORT_REGULAR[1]. [1] <https://3v4l.org/iFDlV> Previous Comments: ------------------------------------------------------------------------ [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

« previous php.bugs (#232103) next »