How to Sort a Multidimensional Array by Value in PHP

A multi-dimensional array is an array that contains one or more arrays into it. Each array within the multi-dimensional array can have different keys and values, and may also contain other arrays within it.

Sorting a multi-dimensional array by value in PHP is very easy; In this tutorial, you will learn various methods of sorting a multi-dimensional array by value in PHP.

How to Sort a Multi-dimensional Array by Value in PHP

By following these methods, you can sort a multidimensional arrays by value in PHP:

  • Method 1: Using usort()
  • Method 2: Using array_multisort()
  • Method 3: Using a custom sort function

Method 1: Using usort()

The usort() function is a built-in PHP function that sorts an array by a specified function. To use this function to sort a multi-dimensional array, you need to define a function that will compare the values of the arrays. Here’s an example:

$multiArray = array(
    array("name"=>"John", "age"=>30),
    array("name"=>"Mary", "age"=>20),
    array("name"=>"Bob", "age"=>25)
);

function compareAge($a, $b) {
    return $a['age'] - $b['age'];
}

usort($multiArray, "compareAge");

print_r($multiArray);

Here is an explanation of above-given example code:

  1. $multiArray = array(...) – This line initializes a multi-dimensional array called $multiArray, which contains three inner arrays. Each inner array contains two key-value pairs – one for name and another for age.
  2. function compareAge($a, $b) { ... } – This defines a function called compareAge that will be used to compare the ages of the inner arrays in the multi-dimensional array. The function takes two arguments, $a and $b, which represent two inner arrays being compared. Inside the function, the ages of the two arrays are subtracted from each other, and the result is returned.
  3. usort($multiArray, "compareAge"); – This line uses the usort() function to sort the $multiArray array using the compareAge() function. The usort() function takes two arguments – the array to be sorted, and the name of the comparison function to be used. In this case, it’s "compareAge", the function we defined earlier.
  4. print_r($multiArray); – Finally, this line prints the sorted multi-dimensional array to the screen using the print_r() function. This function displays the contents of the array in a human-readable format.

Method 2: Using array_multisort()

The array_multisort() function is another built-in PHP function that sorts multiple arrays at once. To use this function to sort a multi-dimensional array, you need to extract the values of the arrays into separate arrays. Here’s an example:

$multiArray = array(
    array("name"=>"John", "age"=>30),
    array("name"=>"Mary", "age"=>20),
    array("name"=>"Bob", "age"=>25)
);

foreach ($multiArray as $key => $row) {
    $name[$key]  = $row['name'];
    $age[$key] = $row['age'];
}

array_multisort($age, SORT_ASC, $name, SORT_ASC, $multiArray);

print_r($multiArray);

Here is an explanation of above-given example code:

  1. First, the $multiArray variable is defined as a multi-dimensional array that contains three sub-arrays, each with a name and age field.
  2. Then, a foreach loop is used to iterate over the sub-arrays in $multiArray. Inside the loop, two separate arrays are created to store the name and age values of each sub-array.
  3. The array_multisort() function is called with the $age and $name arrays as arguments. This function sorts multiple arrays at once, in this case, the $age and $name arrays.
  4. The SORT_ASC constant is used to specify that the sorting order should be ascending.
  5. Finally, the sorted $multiArray is printed using the print_r() function.

Method 3: Using a custom sort function

You can also create a custom sort function that sorts a multi-dimensional array by value. Here’s an example:

$multiArray = array(
    array("name"=>"John", "age"=>30),
    array("name"=>"Mary", "age"=>20),
    array("name"=>"Bob", "age"=>25)
);

function sortArray($array, $key) {
    function compare($a, $b) {
        return $a[$key] - $b[$key];
    }
    usort($array, "compare");
    return $array;
}

$sortedArray = sortArray($multiArray, 'age');

print_r($sortedArray);

Here is an explanation of above-given example code:

  1. Create a multi-dimensional array: The first line of the code creates a multi-dimensional array, named $multiArray, which contains three sub-arrays, each with two key-value pairs. Each sub-array represents a person, with a name and an age.
  2. Define a sortArray() function: The sortArray() function is defined next, which takes two arguments – an array to be sorted, and the key by which to sort the array.
  3. Define a compare() function: Within the sortArray() function, a nested function named compare() is defined. This function takes two arguments, $a and $b, which represent the two sub-arrays being compared. The function compares the two sub-arrays by their key values specified in the $key parameter passed to the sortArray() function.
  4. Use the usort() function: The usort() function is then called with the multi-dimensional array and the compare() function as arguments. The usort() function sorts the array using the compare() function as a callback.
  5. Return the sorted array: Finally, the sorted array is returned by the sortArray() function and assigned to the $sortedArray variable. The print_r() function is used to display the contents of the $sortedArray variable. The output will be a sorted array, where each sub-array is sorted by age in ascending order.

Here is a some faq’s on How to Sort a Multi-dimensional Array by Value in PHP

Q: What are some common methods for sorting multi-dimensional arrays by value in PHP?

A: There are several ways to sort a multi-dimensional array by value in PHP, including using the usort() function, the array_multisort() function, or creating a custom sort function.

Q: What is the difference between usort() and array_multisort()?

A: The usort() function sorts a multi-dimensional array based on a specified custom comparison function, while the array_multisort() function sorts one or more arrays or multi-dimensional arrays by one or more keys, values, or user-defined functions.

Q: How can I specify which key to sort by when using a custom sort function?

A: You can specify which key to sort by in a custom sort function by passing the key as an argument to the function or by using a global variable to access the key.

Q: How can I sort a multi-dimensional array in descending order?

A: To sort a multi-dimensional array in descending order, you can modify the comparison function to return $b[$key] - $a[$key] instead of $a[$key] - $b[$key] in the compare() function or use the SORT_DESC flag when using the array_multisort() function.

Q: Can I sort a multi-dimensional array by multiple values?

A: Yes, you can sort a multi-dimensional array by multiple values by using the array_multisort() function and specifying multiple keys to sort by. Alternatively, you can modify the compare() function in the code example to compare multiple values before returning the result.

Q: Can I sort a multi-dimensional array by a specific key’s value alphabetically?

A: Yes, you can sort a multi-dimensional array by a specific key’s value alphabetically using a custom sort function. The comparison function should compare the values of the specified key in each sub-array using the strcmp() function to sort the array alphabetically.

Q: How do I sort a multi-dimensional array in ascending order alphabetically?

A: To sort a multi-dimensional array in ascending order alphabetically, use the usort() function along with a custom comparison function that compares the values of the specified key alphabetically using strcmp(). The usort() function sorts the array in ascending order based on the custom comparison function.

Conclusion

Sorting a multi-dimensional array by value in PHP is a useful technique that can help you organize your data in a meaningful way. In this tutorial, you have explored three methods of sorting a multi-dimensional array by value in PHP, including using the usort() function, using the array_multisort() function, and creating a custom sort function. By using these methods, you can easily sort your multi-dimensional arrays by any value you choose.

Recommended PHP Tutorials

  1. To Remove Elements or Values from Array PHP
  2. How to Convert String to Array in PHP
  3. Array Push and POP in PHP | PHP Tutorial
  4. PHP Search Multidimensional Array [key and value and return key]
  5. PHP Array to String Conversion – PHP Implode
  6. Array Functions In PHP
  7. Functions: Remove First Character From String PHP
  8. Remove Specific/Special Characters From String In PHP
  9. How to Replace First and Last Character From String PHP
  10. Reverse String in PHP
  11. remove duplicates from multidimensional array PHP
  12. PHP Remove Duplicate Elements or Values from Array PHP
  13. PHP Convert Array to Comma Separated String
  14. Compare Arrays Keys and Values PHP
  15. PHP Object to Array Convert using JSON Decode
  16. PHP Get Highest Value in Multidimensional Array
  17. Convert CSV to JSON PHP
  18. How to Check If the Variable is Empty in PHP

AuthorDevendra Dode

Greetings, I'm Devendra Dode, a full-stack developer, entrepreneur, and the proud owner of Tutsmake.com. My passion lies in crafting informative tutorials and offering valuable tips to assist fellow developers on their coding journey. Within my content, I cover a spectrum of technologies, including PHP, Python, JavaScript, jQuery, Laravel, Livewire, CodeIgniter, Node.js, Express.js, Vue.js, Angular.js, React.js, MySQL, MongoDB, REST APIs, Windows, XAMPP, Linux, Ubuntu, Amazon AWS, Composer, SEO, WordPress, SSL, and Bootstrap. Whether you're starting out or looking for advanced examples, I provide step-by-step guides and practical demonstrations to make your learning experience seamless. Let's explore the diverse realms of coding together.

Leave a Reply

Your email address will not be published. Required fields are marked *