# asort

(PHP 4, PHP 5, PHP 7)

asortOrdena un array y mantiene la asociación de índices

### Descripción

asort ( array `&\$array` [, int `\$sort_flags` = SORT_REGULAR ] ) : bool

Esta función ordena un array manteniendo la correlación de los índices del array con los elementos con los que están asociados. Esta función se utiliza principalmente para ordenar arrays asociativos en los que el orden es importante.

Nota:

Si dos miembros se comparan como iguales, su orden relativo en el array oredenado será indefinido.

### Parámetros

`array`

`sort_flags`

Quizá se necesita cambiar el comportamiento del ordenado usando este parámetro opcional `sort_flags`, para más información ver sort().

### Valores devueltos

Devuelve `TRUE` en caso de éxito o `FALSE` en caso de error.

### Ejemplos

Ejemplo #1 Ejemplo de la función asort()

``` <?php\$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");asort(\$fruits);foreach (\$fruits as \$key => \$val) {    echo "\$key = \$val\n";}?> ```

```c = apple
b = banana
d = lemon
a = orange
```

### Ver también add a note

### User Contributed Notes 31 notes

80
nick ([AT]) nickyost ([DOT]) com
9 years ago
``` This function can be used to sort multidimensional arrays with almost no work whatsoever by using the individual values within the custom sort function.This function passes the entire child element even if it is not a string. If it is an array, as would be the case in multidimensional arrays, it will pass the whole child array as one parameter.Therefore, do something elegant like this:<?php     // Sort the multidimensional array     usort(\$results, "custom_sort");     // Define the custom sort function     function custom_sort(\$a,\$b) {          return \$a['some_sub_var']>\$b['some_sub_var'];     }?>This does in 4 lines what other functions took 40 to 50 lines to do. This does not require you to create temporary arrays or anything. This is, for me, a highly preferred solution.Hope it helps! ```
19
5 years ago
``` /* * Name : Aditya Mehrotra * Email: aditycse@gmail.com *///Example for sorting by values for an alphanumeric array also having case-sensitive data\$exampleArray1 = \$exampleArray2 = array(    0 => 'example1',    1 => 'Example10',    2 => 'example12',    3 => 'Example2',    4 => 'example3',    5 => 'EXAMPLE10',    6 => 'example10');//default sortingasort(\$exampleArray1);// alphanumeric with case-sensitive data sorting by valuesasort(\$exampleArray2, SORT_STRING | SORT_FLAG_CASE | SORT_NATURAL);//output of defaut sortingprint_r(\$exampleArray1);/* * output of default sorting  Array  (   => EXAMPLE10   => Example10   => Example2   => example1   => example10   => example12   => example3  ) */print_r(\$exampleArray2);/* * output of alphanumeric with case-sensitive data sorting by values Array(     => example1     => Example2     => example3     => EXAMPLE10     => Example10     => example10     => example12) */ ```
jacko at kring dot co dot uk
20 years ago
``` asort has one anoying feature, it ignores any default or implicit order in the data.  i.e. if two elements of an array contain "banana" then it is not garanteed that the first will still be the first after the sort. This makes the Burrows-Wheeler block sort a bit of a pain to impliment, with a trailing string having to be appended to all strings before sorting, and removed after sorting. To maintain the so called "banana" order. ```
14
12 years ago
``` For a recent project I needed to sort an associative array by value first, and then by key if a particular value appeared multiple times. I wrote this function to accomplish the task. Note that the parameters default to sort ascending on both keys and values, but allow granular control over each.<?phpfunction aksort(&\$array,\$valrev=false,\$keyrev=false) {  if (\$valrev) { arsort(\$array); } else { asort(\$array); }    \$vals = array_count_values(\$array);    \$i = 0;    foreach (\$vals AS \$val=>\$num) {        \$first = array_splice(\$array,0,\$i);        \$tmp = array_splice(\$array,0,\$num);        if (\$keyrev) { krsort(\$tmp); } else { ksort(\$tmp); }        \$array = array_merge(\$first,\$tmp,\$array);        unset(\$tmp);        \$i = \$num;    }}// Example\$tmp = array('ca'=>1,'cb'=>2,'ce'=>1,'pa'=>2,'pe'=>1);// Standard asortasort(\$tmp);print_r(\$tmp);// Sort value ASC, key ASCaksort(\$tmp);print_r(\$tmp);// Sort value DESC, key ASCaksort(\$tmp,true);print_r(\$tmp);// Sort value DESC, key DESCaksort(\$tmp,true,true);print_r(\$tmp);// ResultsArray(    [pe] => 1    [ca] => 1    [ce] => 1    [cb] => 2    [pa] => 2)Array(    [ca] => 1    [ce] => 1    [pe] => 1    [cb] => 2    [pa] => 2)Array(    [cb] => 2    [pa] => 2    [ca] => 1    [ce] => 1    [pe] => 1)Array(    [pa] => 2    [cb] => 2    [pe] => 1    [ce] => 1    [ca] => 1) ```
12 years ago
``` Small typo in the aksort function I just submitted. Here's the entire thing again, with the correction noted:<?phpfunction aksort(&\$array,\$valrev=false,\$keyrev=false) {  if (\$valrev) { arsort(\$array); } else { asort(\$array); }  \$vals = array_count_values(\$array);    \$i = 0;    foreach (\$vals AS \$val=>\$num) {        \$first = array_splice(\$array,0,\$i);        \$tmp = array_splice(\$array,0,\$num);        if (\$keyrev) { krsort(\$tmp); } else { ksort(\$tmp); }        \$array = array_merge(\$first,\$tmp,\$array);        unset(\$tmp);        \$i = \$i+\$num;        // Fixed from previous post: \$i = \$num;    }}?> ```
15
richard at happymango dot me dot uk
14 years ago
``` This is a function to sort an indexed 2D array by a specified sub array key, either ascending or descending.It is usefull for sorting query results from a database by a particular field after the query has been returnedThis function can be quite greedy. It recreates the array as a hash to use ksort() then back againBy default it will sort ascending but if you specify \$reverse as true it will return the records sorted descending <?phpfunction record_sort(\$records, \$field, \$reverse=false){    \$hash = array();        foreach(\$records as \$record)    {        \$hash[\$record[\$field]] = \$record;    }        (\$reverse)? krsort(\$hash) : ksort(\$hash);        \$records = array();        foreach(\$hash as \$record)    {        \$records []= \$record;    }        return \$records;}// Example below\$airports = array(    array( "code" => "LHR", "name" => "Heathrow" ),    array( "code" => "LGW", "name" => "Gatwick" ),);printf("Before: <pre>%s</pre>", print_r(\$airports, true));\$airports = record_sort(\$airports, "name");printf("After: <pre>%s</pre>", print_r(\$airports, true));?>Example Outputs:Before: Array(     => Array ( [code] => LHR, [name] => Heathrow )     => Array ( [code] => LGW, [name] => Gatwick ))After: Array(     => Array ( [code] => LGW, [name] => Gatwick )     => Array ( [code] => LHR, [name] => Heathrow )) ```
php at web-in-time dot com
14 years ago
``` acecream's function works fine, especially with the spectre extension.nevertheless sometimes the index values have to be kept. To achieve this, just replace:\$sorted_arr[] = \$array[\$arr_key];  with:\$sorted_arr[\$arr_key] = \$array[\$arr_key]; ```
20 years ago
``` Here's a little routine I whipped up to sort multi-dimensional arrays: <?php /** ** comesafter (\$s1, \$s2) ** ** Returns 1 if \$s1 comes after \$s2 alphabetically, 0 if not. **/ function comesafter (\$s1, \$s2) {         /**          ** We don't want to overstep the bounds of one of the strings and segfault,          ** so let's see which one is shorter.          **/         \$order = 1;         if (strlen (\$s1) > strlen (\$s2)) {                 \$temp = \$s1;                 \$s1 = \$s2;                 \$s2 = \$temp;                 \$order = 0;         }         for (\$index = 0; \$index < strlen (\$s1); \$index++) {                 /**                  ** \$s1 comes after \$s2                  **/                 if (\$s1[\$index] > \$s2[\$index]) return (\$order);                 /**                  ** \$s1 comes before \$s2                  **/                 if (\$s1[\$index] < \$s2[\$index]) return (1 - \$order);         }         /**          ** Special case in which \$s1 is a substring of \$s2          **/         return (\$order); } /** ** asortbyindex (\$sortarray, \$index) ** ** Sort a multi-dimensional array by a second-degree index. For instance, the 0th index ** of the Ith member of both the group and user arrays is a string identifier. In the ** case of a user array this is the username; with the group array it is the group name. ** asortby **/ function asortbyindex (\$sortarray, \$index) {         \$lastindex = count (\$sortarray) - 1;         for (\$subindex = 0; \$subindex < \$lastindex; \$subindex++) {                 \$lastiteration = \$lastindex - \$subindex;                 for (\$iteration = 0; \$iteration < \$lastiteration;    \$iteration++) {                         \$nextchar = 0;                         if (comesafter (\$sortarray[\$iteration][\$index], \$sortarray[\$iteration + 1][\$index])) {                                 \$temp = \$sortarray[\$iteration];                                 \$sortarray[\$iteration] = \$sortarray[\$iteration + 1];                                 \$sortarray[\$iteration + 1] = \$temp;                         }                 }         }         return (\$sortarray); } ?> It's a bit long with all the comments, but I hope it helps. ```
Anon
9 years ago
``` Case insensitive sort in one line:<?phparray_multisort(array_map('strtolower', \$array), \$array);?> ```
przemekkus [at] interia [dot] pl
13 years ago
``` Function written by a dot brandon at chello dot nl has an error  - wrong variable name. It should be:if(\$rev) arsort(\$named_hash,\$flags=0) ;instead ofif(\$reverse) arsort(\$named_hash,\$flags=0) ; ```
richard at happymango dot me dot uk
14 years ago
``` This is a fixed version of the same function I posted below. Now it will handle duplicate entries in the sorted field. EG: If there were two records that had the name Heathrow it would still work. <?phpfunction record_sort(\$records, \$field, \$reverse=false){    \$hash = array();        foreach(\$records as \$key => \$record)    {        \$hash[\$record[\$field].\$key] = \$record;    }        (\$reverse)? krsort(\$hash) : ksort(\$hash);        \$records = array();        foreach(\$hash as \$record)    {        \$records []= \$record;    }        return \$records;}?> ```
rojaro
16 years ago
``` Advanced sort array by second index function, which produces ascending (default) or descending output and uses optionally natural case insensitive sorting (which can be optionally case sensitive as well).Only the first two arguments are required.<?phpfunction sabsi (\$array, \$index, \$order='asc', \$natsort=FALSE, \$case_sensitive=FALSE) {  if(is_array(\$array) && count(\$array)>0) {    foreach(array_keys(\$array) as \$key) \$temp[\$key]=\$array[\$key][\$index];    if(!\$natsort) (\$order=='asc')? asort(\$temp) : arsort(\$temp);    else {      (\$case_sensitive)? natsort(\$temp) : natcasesort(\$temp);      if(\$order!='asc') \$temp=array_reverse(\$temp,TRUE);    }    foreach(array_keys(\$temp) as \$key) (is_numeric(\$key))? \$sorted[]=\$array[\$key] : \$sorted[\$key]=\$array[\$key];    return \$sorted;  }  return \$array;}?> ```
rcwang at cmu dot edu
18 years ago
``` Here's my version of sorting multi-dimensional array by 2nd index. Feel free to change the code to suit your needs. <?php function aSortBySecondIndex(\$multiArray, \$secondIndex) {     while (list(\$firstIndex, ) = each(\$multiArray))         \$indexMap[\$firstIndex] = \$multiArray[\$firstIndex][\$secondIndex];     asort(\$indexMap);     while (list(\$firstIndex, ) = each(\$indexMap))         if (is_numeric(\$firstIndex))             \$sortedArray[] = \$multiArray[\$firstIndex];         else \$sortedArray[\$firstIndex] = \$multiArray[\$firstIndex];     return \$sortedArray; } ?> ```
freeman at generalresources dot com
19 years ago
``` The asortbyindex(\$sortarray, \$index) looks like sort not asort. The key of the \$sortarray was changed. ```
Anonymous
18 years ago
``` Similar to above but for an array of arrays instead of an array of objects. <?php function aasort(\$x,\$var,\$cmp='strcasecmp'){   if ( is_string(\$var) ) \$var = "'\$var'";   uasort(\$x,     create_function('\$a,\$b',       'return '.\$cmp.'( \$a['.\$var.'],\$b['.\$var.']);')   );   return \$x; } ?> ```
smileaf at smileaf dot org
13 years ago
``` Ok I was mistaken, after re-reading the previous post the ".\$key" is important. What caused the sorting issue for me wasn't that at all. But rather something else.doing an: asort(\$records, \$flags); before returning fixes the sorting problems.The sorting problem I was refearing to causes a character based sorting done on numeric data.so instead of:123...101220It was returned back as110122203...basically what I was trying to fix in the first place. ```
salchicha at cable dot net dot co
18 years ago
``` Here's one I whipped up to allow you to sort an array of a specific class by a member or function: <?php // Sort a class by one of its members (even lowercase!!!) function casort(\$arr, \$var) {    \$tarr = array();    \$rarr = array();    for(\$i = 0; \$i < count(\$arr); \$i++) {       \$element = \$arr[\$i];       \$tarr[] = strtolower(\$element->{\$var});    }    reset(\$tarr);    asort(\$tarr);    \$karr = array_keys(\$tarr);    for(\$i = 0; \$i < count(\$tarr); \$i++) {       \$rarr[] = \$arr[intval(\$karr[\$i])];    }    return \$rarr; } ?> It works very well. For example, I have a Room class with members title, isActive(), date, etc. I can sort an array by casort(\$rooms, "title") or casort(\$rooms, "isActive()") and it'll work. ```
marty8zhang at gmail dot com
3 months ago
``` "This function sorts an array such that array indices maintain their correlation with the array elements they are associated with."Note this sentence in the description has a quite important implication especially when you're working with an originally non-indexed (or say integer-indexed) array and JSON encoding/decoding.I'm not reporting this as a bug, because the end result does fit into the description.<?php\$myArray = ['small_image', 'image'];var_dump(json_encode(\$myArray)); // string(23) "["small_image","image"]"var_dump(is_object(\$myArray)); // bool(false)asort(\$myArray);\$myJson = json_encode(\$myArray);var_dump(\$myJson); // string(31) "{"1":"image","0":"small_image"}"var_dump(is_object(\$myArray)); // bool(false)/* * class stdClass#1 (2) { *     public \$1 => *     string(5) "image" *     public \$0 => *     string(11) "small_image" * } */var_dump(json_decode(\$myJson));?> ```
Jesse K
4 months ago
``` 'asort' is fine for sorting arrays in English, but if accented characters exist in the array then it is better to use the 'asort' method of PHP's Collator class:https://www.php.net/manual/en/class.collator.php\$collator = new \Collator('fr_CA');\$collator->asort(\$french_list);There are options for using `setlocale()` to control `asort` behaviour, but it isn't reliable across systems.For instance, in my development environment I only have access to the following locals:\$ locale -aCC.UTF-8POSIX ```
gunnar at taljaren dot se
13 years ago
``` for (\$i=0;\$i<5;\$i++)   \$values[] = \$i;asort(\$values);  works, butfor (\$i=0;\$i<5;\$i++)   \$values[\$i] =\$i;asort(\$values);doesn't! ```
mbevan at marginsoftware dot com
18 years ago
``` Nevermind... use my last note as a quick tip: if you wish to keep the keys, use asort() and arsort() in place of sort() and rsort(). ```
bwuhlman at tallships dot ca
20 years ago
``` Well, actually, asort has *two* annoying features. It works perfectly well sorting hashes (or associative arrays, as you might have it), but doggedly refuses to sort regular arrays maintaining index assocation. Kind've makes sense, but the docs don't explicitly say you can't do it. Urgggh. ```
-1
Eran
11 years ago
``` i made this sample multi dimensional array sort to someone who needed to read lines from a text file instead of using sql - order by statement.the idea is to take the key and sort(order) the specific column and then order the entire of the array as the selected column asort returned.<?php/** * * This sample is reading text data * and perform a sort to a 2 dimensional array * just like a normal sql do to "order by asc" * */\$foo = array();/*# SORT_REGULAR - compare items normally (don't change types)# SORT_NUMERIC - compare items numerically# SORT_STRING - compare items as strings*/\$sort_by = SORT_REGULAR;/*# 0 - order by name column# 1 - order by age column# 2 - order by rank column# 3 - order by color column*/\$order_by = 1;// source file\$line_of_text = 'a1name|f2age|h3rank|jcolor';\$line_of_text = 'b1name|d2age|i3rank|k4color';\$line_of_text = 'c1name|e2age|g3rank|l4color';// make arrayfor (\$x=0; \$x<=2; \$x++){    \$line = explode('|',\$line_of_text[\$x]);    // save it by coulmns otherwise it will saved like rows    for (\$i=0; \$i<=3; \$i++) {          \$foo[\$i][\$x] = \$line[\$i];    }}// get the key order\$a = \$foo[\$order_by];// sortasort(\$a, \$sort_by);// start printecho "<table cellpudding=0 cellspacing=0 border=1>\n";        echo "<tr>\n";          echo "<td>key</td>\n";          echo "<td>name</td>\n";          echo "<td>age</td>\n";          echo "<td>rank</td>\n";          echo "<td>color</td>\n";        echo "</tr>\n";// print by key orderforeach (\$a as \$k => \$v) {    echo "<tr>\n";      echo "<td>\$k</td>\n";      // you can print here a for loop (0 to num of columns[=3])      echo "<td>".\$foo[\$k]."</td>\n";      echo "<td>".\$foo[\$k]."</td>\n";      echo "<td>".\$foo[\$k]."</td>\n";      echo "<td>".\$foo[\$k]."</td>\n";    echo "</tr>\n";}echo "</table>\n";?> ```
-1
spectre at hellfish dot NOSPAM dot org
17 years ago
``` that works nicely, tho it breaks the result-array up if one or more of arrays indexes are deleted before sorting. this one should fix it up:change:for (\$i = 0; \$i < sizeof(\$array); \$i++) {to:foreach (\$array as \$i => \$k) { ```
-1
a dot brandon at chello dot nl
13 years ago
``` I use this for quasi-SQL orderby. Loosely based on smileaf. Any good for you nerds?<?function named_records_sort(\$named_recs, \$order_by, \$rev=false, \$flags=0){// Create 1-dimensional named array with just // sortfield (in stead of record) values    \$named_hash = array();      foreach(\$named_recs as \$key=>\$fields)              \$named_hash["\$key"] = \$fields[\$order_by]; // Order 1-dimensional array, // maintaining key-value relations       if(\$reverse) arsort(\$named_hash,\$flags=0) ;    else asort(\$named_hash, \$flags=0);  // Create copy of named records array // in order of sortarray      \$sorted_records = array();     foreach(\$named_hash as \$key=>\$val)            \$sorted_records["\$key"]= \$named_recs[\$key];  return \$sorted_records;} // named_recs_sort()function show_sorted_records(\$named_recs, \$order_by, \$rev=false, \$flags=0){\$sorted_records=named_records_sort(\$named_recs, \$order_by, \$rev, \$flags);foreach(\$sorted_records as \$name=>\$fields)   {echo "<b>\$name</b>   ";    foreach(\$fields as \$field=>\$val)           echo "\$field = \$val "; echo "<br>";}} // show_sorted_records()\$girl_friends=array();\$girl_friends["Anna"]=array("born"=>'1989-08-22',"cupsize"=>'B-',"IQ"=>105, "daddy"=>'rich');\$girl_friends["Zoe"]=array("born"=>'1978-03-11',"cupsize"=>'C#',"IQ"=>130, "daddy"=>'poor');\$girl_friends["Lilly"]=array("born"=>'1985-06-16',"cupsize"=>'DD',"IQ"=>90, "daddy"=>'nasty');\$order_by="cupsize"; echo "And the winners are: <br>";show_sorted_records(\$girl_friends, \$order_by, true);?> ```
-1
stephen [ at ] brooksie-net [ dot ] co [ dot ] uk
7 years ago
``` It is obviously necessary to log the keys used as so we don't overwrite previous entries in the array ;o) N.B. this also effects the timings, but still faster than the alternatives :      * int : 0.00159    (ms)      * str : 0.00092    (ms) <?php private function _keySort(Array \$data)     {         \$keys = array();                 foreach(\$data as \$row) {                         \$keyIncrement =                 (!isset(\$keys[\$row[\$this->_orderField]]))                     ? \$keys[\$row[\$this->_orderField]] = 0                     : ++\$keys[\$row[\$this->_orderField]];             \$tempArray[\$row[\$this->_orderField].\$keyIncrement] = \$row;         }         if (\$this->_orderDirection == 'DESC') {             krsort(\$tempArray, SORT_NATURAL | SORT_FLAG_CASE );         } else {             ksort(\$tempArray, SORT_NATURAL | SORT_FLAG_CASE);         }         return \$tempArray;                           } ?> ```
-1
mzvarik at gmail dot com
12 years ago
``` I noticed that my function mentioned earlier is very misleading - somebody please delete that note!This is how you sort:<?phpsetlocale (LC_ALL, 'czech');\$array = array("a", "č", "c");usort (\$array, 'strcoll');print_r(\$array);?> ```
-1
phzzzt .a.t. acm .d.o.t. org
18 years ago
``` Similar to above but for an array of arrays instead of an array of objects. <?php function aasort(\$x,\$var,\$cmp='strcasecmp'){   if ( is_string(\$var) ) \$var = "\'\$var\'";   uasort(\$x,     create_function('\$a,\$b',       'return '.\$cmp.'( \$a['.\$var.'],\$b['.\$var.']);')   );   return \$x; } ?> ```
-5
rick at toewsweb dot net
9 years ago
``` On sorting by value first, then by key (cf., 2008-01-31 notes by mike at clear-link dot com):What occurred to me to solve this problem was to extract the keys and values into separate arrays, then use array_multisort to get the desired order:Ex:<?php\$kvpairs = array('noun' => 'thought', 'animal' => 'fish', 'abstract' => 'thought', 'food' => 'fish', 'verb' => 'fish');print "before:\n";print_r(\$kvpairs);// Essentially, one line of code is all that's needed for the sort:array_multisort(array_values(\$kvpairs), array_keys(\$kvpairs), \$kvpairs);print "after:\n";print_r(\$kvpairs);?>before:Array(    [noun] => thought    [animal] => fish    [abstract] => thought    [food] => fish    [verb] => fish)after:Array(    [animal] => fish    [food] => fish    [verb] => fish    [abstract] => thought    [noun] => thought)Of course, array_multisort allows you to specify sort order (SORT_ASC, SORT_DESC) and sort type (SORT_REGULAR, SORT_STRING, SORT_NUMERIC) for each array you pass it. ```
-4
bakatamas at freemail dot hu
12 years ago
``` Dear mike at clear-link dot com!I needed a case insensitive version of your function. It is still not perfect as I have to do something with country specific characters (öüóőúéáűíÖÜÓŐÚÉÁŰÍ)function akisort(&\$array,\$valrev=false,\$keyrev=false)    {    if (\$valrev)        {        arsort(\$array);        }        else        {        asort(\$array);        };    \$vals = array_count_values(\$array);    \$i = 0;    foreach (\$vals AS \$val=>\$num)        {        \$first = array_splice(\$array,0,\$i);        \$tmp = array_splice(\$array,0,\$num);        \$tmp2 = array();        foreach(\$tmp as \$key => \$value)            {            \$tmp2[] = \$key;            \$number = \$value;            };        natcasesort(\$tmp2);        reset(\$tmp2);        print_r(\$tmp2);        unset(\$tmp);        foreach(\$tmp2 as \$key => \$value)            {            \$tmp[\$value] = \$number;            };        if(\$keyrev)            {            \$tmp = array_reverse(\$tmp, true);            };        \$array = array_merge(\$first,\$tmp,\$array);        unset(\$tmp);        \$i = \$i+\$num;        };}; ```
-3
elhanafi123 at gmail dot com
2 years ago
``` I have written this function so its sort an multidimensional array with a specific key.<?phpfunction sort_array(\$array, \$sort_value, \$reverse = false){    \$value = \$result = array();        foreach(\$array as \$key => \$rows){        \$value[\$key] = strtolower(\$rows[\$sort_value]);    }        if(\$reverse == true){        arsort(\$value);    }else{        asort(\$value);    }        foreach(\$value as \$keys => \$null){        \$result[] = \$array[\$keys];    }        return \$result;}?>Examples<?php\$array = array(array('a' => 'foo'), array('a' => 'foo4'), array('a' => 'foo2'), array('a' => 'foo3'));print_r(\$array);//Array (  => Array ( [a] => foo )  => Array ( [a] => foo4 )  => Array ( [a] => foo2 )  => Array ( [a] => foo3 ) )print_r(sort_array(\$array, 'a'));//Array (  => Array ( [a] => foo )  => Array ( [a] => foo2 )  => Array ( [a] => foo3 )  => Array ( [a] => foo4 ) )print_r(sort_array(\$array, 'a', true));//Array (  => Array ( [a] => foo4 )  => Array ( [a] => foo3 )  => Array ( [a] => foo2 )  => Array ( [a] => foo ) ) ?> ``` 