Custom Key-Sorting a Non-Hierarchical Associative Array
In PHP, it is not possible to sort an associative array alphabetically or numerically by default. However, it is possible to create a custom sorting order based on another array.
Function to Implement Custom Key-Sorting
To create a function that performs custom key-sorting, you can use the array_merge() or array_replace() functions. Both these functions take two arrays as input: the first array specifies the desired order of the desired keys, while the second array contains the actual data you want to sort.
The code below demonstrates how to implement this function:
function sortArrayByArray($inputArray, $sortKeysArray) { return array_merge(array_flip($sortKeysArray), $inputArray); }
Example Usage
Consider the following example array:
$customer['address'] = '123 fake st'; $customer['name'] = 'Tim'; $customer['dob'] = '12/08/1986'; $customer['dontSortMe'] = 'this value doesnt need to be sorted';
To sort this array based on the key order specified in the $sortKeysArray, you can use the sortArrayByArray() function as follows:
$sortKeysArray = ['name', 'dob', 'address']; $properOrderedArray = sortArrayByArray($customer, $sortKeysArray);
The resulting $properOrderedArray will be as follows:
[ 'name' => 'Tim', 'dob' => '12/08/1986', 'address' => '123 fake st', 'dontSortMe' => 'this value doesnt need to be sorted' ]
Note that the keys are sorted according to the specified $sortKeysArray, and the values are preserved. The unsortable key ("dontSortMe") is appended to the end of the array.
By using this approach, you can achieve custom key-sorting for non-hierarchical associative arrays in PHP, ensuring that the array keys are ordered in a specific manner.
The above is the detailed content of How Can I Custom Sort the Keys of a PHP Associative Array?. For more information, please follow other related articles on the PHP Chinese website!