note 126326 added to function.uasort

From: Date: Wed, 11 Aug 2021 06:39:02 +0000
Subject: note 126326 added to function.uasort
Groups: php.notes 
Request: Send a blank email to php-notes+get-216767@lists.php.net to get a copy of this message
A stable sort is realized by merging sorting, like "uasort" but stable, and the code is modified based on "mergesort" <?php function uamergesort(&$array, $callback = 'strcmp') { $arraycount = count($array); if ($arraycount < 2) { return; } $halfway = $arraycount / 2; $array1 = array_slice($array, 0, $halfway, true); $array2 = array_slice($array, $halfway, null, true); $this->uamergesort($array1, $callback); $this->uamergesort($array2, $callback); $array = array(); $ptr1 = $ptr2 = 0; $array1keys = array_keys($array1); $array1 = array_values($array1); $array2keys = array_keys($array2); $array2 = array_values($array2); $array1count = count($array1); $array2count = count($array2); while ($ptr1 < $array1count && $ptr2 < $array2count) { if (call_user_func($callback, $array1[$ptr1], $array2[$ptr2]) < 1) { $array[$array1keys[$ptr1]] = $array1[$ptr1]; $ptr1++; } else { $array[$array2keys[$ptr2]] = $array2[$ptr2]; $ptr2++; } } while ($ptr1 < $array1count) {$array[$array1keys[$ptr1]] = $array1[$ptr1]; $ptr1++;} while ($ptr2 < $array2count) {$array[$array2keys[$ptr2]] = $array2[$ptr2]; $ptr2++;} return; } ?> ---- Server IP: 45.112.84.4 Probable Submitter: 45.112.85.242 (proxied: 2409:8960:1224:6c3f:8004:81c7:53ef:870) ---- Manual Page -- https://php.net/manual/en/function.uasort.php Edit -- https://main.php.net/note/edit/126326 Del: integrated -- https://main.php.net/note/delete/126326/integrated Del: useless -- https://main.php.net/note/delete/126326/useless Del: bad code -- https://main.php.net/note/delete/126326/bad+code Del: spam -- https://main.php.net/note/delete/126326/spam Del: non-english -- https://main.php.net/note/delete/126326/non-english Del: in docs -- https://main.php.net/note/delete/126326/in+docs Del: other reasons-- https://main.php.net/note/delete/126326 Reject -- https://main.php.net/note/reject/126326 Search -- https://main.php.net/manage/user-notes.php

« previous php.notes (#216767) next »