PHP array_multisort() function

Example

Return an array sorted in ascending order:

<?php
$a=array("Dog","Cat","Horse","Bear","Zebra");
array_multisort($a);
print_r($a);
?>

Run Examples

Definition and Usage

The array_multisort() function returns a sorted array. You can input one or more arrays. The function first sorts the first array, followed by other arrays, and if two or more values are the same, it will sort the next array.

Note:String keys will be retained, but numeric keys will be reindexed starting from 0 and incremented by 1.

Note:You can set the sorting order and sorting type parameters after each array. If not set, each array parameter will use the default value.

Syntax

array_multisort(array1,sorting order,sorting type,array2,array3...)
Parameters Description
array1 Required. Specify an array.
sorting order

Optional. Specify the sorting order. Possible values:

  • SORT_ASC - Default. Arrange in ascending order (A-Z).
  • SORT_DESC - Arrange in descending order (Z-A).
sorting type

Optional. Specify the sorting type. Possible values:

  • SORT_REGULAR - Default. Arrange each item in regular order (Standard ASCII, without changing the type).
  • SORT_NUMERIC - Treat each item as a number.
  • SORT_STRING - Treat each item as a string.
  • SORT_LOCALE_STRING - Treat each item as a string, based on the current locale setting (which can be changed using setlocale()).
  • SORT_NATURAL - Treat each item as a string, using a natural sorting similar to natsort().
  • SORT_FLAG_CASE - Can be combined (bitwise OR) with SORT_STRING or SORT_NATURAL to sort strings without case sensitivity.
array2 Optional. Specify an array.
array3 Optional. Specify an array.

Description

The array_multisort() function sorts multiple arrays or multidimensional arrays.

The array in the parameter is treated as a table column and sorted by row - this is similar to the functionality of the ORDER BY clause in SQL. The first array is the main array to be sorted. If the rows (values) in the array are compared as the same, they will be sorted according to the size of the corresponding values in the next input array, and so on.

The first parameter is an array, and each subsequent parameter may be an array or one of the following sorting order flags (sorting flags are used to change the default sorting order):

  • SORT_ASC - Default, arrange in ascending order. (A-Z)
  • SORT_DESC - Arrange in descending order. (Z-A)

You can then specify the type of sorting:

  • SORT_REGULAR - Default. Arrange each item in regular order.
  • SORT_NUMERIC - Arrange each item in numerical order.
  • SORT_STRING - Sort each item in alphabetical order.

Technical Details

Return Value: Returns TRUE if successful, and FALSE if failed.
PHP Version: 4+
Update Log:

The sorting types SORT_NATURAL and SORT_FLAG_CASE were added in PHP 5.4.

The sorting type SORT_LOCALE_STRING was added in PHP 5.3.

More Examples

Example 1

Return an array sorted in ascending order:

<?php
$a1 = array("Dog", "Cat");
$a2 = array("Fido", "Missy");
array_multisort($a1, $a2);
print_r($a1);
print_r($a2);
?>

Run Examples

Example 2

How to sort when two values are the same:

<?php
$a1 = array("Dog", "Dog", "Cat");
$a2 = array("Pluto", "Fido", "Missy");
array_multisort($a1, $a2);
print_r($a1);
print_r($a2);
?>

Run Examples

Example 3

Using sorting parameters:

<?php
$a1 = array("Dog", "Dog", "Cat");
$a2 = array("Pluto", "Fido", "Missy");
array_multisort($a1, SORT_ASC, $a2, SORT_DESC);
print_r($a1);
print_r($a2);
?>

Run Examples

Example 4

Merge two arrays and sort them in descending order by number:

<?php
$a1 = array(1, 30, 15, 7, 25);
$a2 = array(4, 30, 20, 41, 66);
$num = array_merge($a1, $a2);
array_multisort($num, SORT_DESC, SORT_NUMERIC);
print_r($num);
?>

Run Examples