Home > Article > Backend Development > How to Sort Multi-Dimensional PHP Arrays Based on Inner Array Values?
Sorting Multi-Dimensional PHP Arrays Based on Inner Array Values
Sorting multi-dimensional arrays can be tricky, especially when the sorting parameter is buried within nested arrays. To sort a PHP hashtable based on a value in the inner array, such as sorting an array of arrays by the 'name' key, a custom sorting function is required.
Creating a Custom Sorting Function
One method for sorting based on nested values is to create a custom sorting function that extracts the desired value from the inner array:
<code class="php">function cmp($a, $b) { return $b['name'] - $a['name']; }</code>
In this example, the cmp function compares the 'name' keys in the inner arrays. Sorting in descending order is achieved by subtracting the values rather than adding them.
Using the Sorting Function
To utilize the custom sorting function, apply usort to the array:
<code class="php">usort($mydata, "cmp");</code>
This sorts the $mydata array in descending order based on the 'name' key in the inner arrays.
Alternative Method
Depending on the specific use case, another option for sorting multi-dimensional arrays is the array_sort function:
<code class="php">function array_sort($array, $on, $order=SORT_ASC){ // ... (function definition) ... // ... (sorting logic) ... }</code>
The array_sort function can be used as follows to sort in ascending order by the 'name' key:
<code class="php">$list = array( array( 'type' => 'suite', 'name' => 'A-Name'), array( 'type' => 'suite', 'name' => 'C-Name'), array( 'type' => 'suite', 'name' => 'B-Name') ); $list = array_sort($list, 'name', SORT_ASC);</code>
This alternative method provides a comprehensive solution for sorting multi-dimensional arrays based on values in the inner arrays.
The above is the detailed content of How to Sort Multi-Dimensional PHP Arrays Based on Inner Array Values?. For more information, please follow other related articles on the PHP Chinese website!