note 35190 deleted from function.natsort by cmb

From: Date: Sun, 29 Sep 2019 12:26:12 +0000
Subject: note 35190 deleted from function.natsort by cmb
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-212435@lists.php.net to get a copy of this message
Note Submitter: justin at redwiredesign dot com ---- One of the things I've needed to do lately is apply natural sorting to a complex array, e.g.: Array ( [0] => Array ( [ID] = 4 [name] = Fred ) [1] => Array ( [ID] = 6 [name] = Bob ) ) where I want to sort the parent array by the child's name. I couldn't see a way of doing this using array_walk, so I've written a simple function to do it. Hopefully someone will find this useful: /** * @return Returns the array sorted as required * @param $aryData Array containing data to sort * @param $strIndex Name of column to use as an index * @param $strSortBy Column to sort the array by * @param $strSortType String containing either asc or desc [default to asc] * @desc Naturally sorts an array using by the column $strSortBy */ function array_natsort($aryData, $strIndex, $strSortBy, $strSortType=false) { // if the parameters are invalid if (!is_array($aryData) || !$strIndex || !$strSortBy) // return the array return $aryData; // create our temporary arrays $arySort = $aryResult = array(); // loop through the array foreach ($aryData as $aryRow) // set up the value in the array $arySort[$aryRow[$strIndex]] = $aryRow[$strSortBy]; // apply the natural sort natsort($arySort); // if the sort type is descending if ($strSortType=="desc") // reverse the array arsort($arySort); // loop through the sorted and original data foreach ($arySort as $arySortKey => $arySorted) foreach ($aryData as $aryOriginal) // if the key matches if ($aryOriginal[$strIndex]==$arySortKey) // add it to the output array array_push($aryResult, $aryOriginal); // return the return return $aryResult; }

« previous php.notes (#212435) next »