Alvin Poh

# How To Sort A Multidimensional Array By One Element In PHP

I had a table’s worth of listings and had stored all the values in a multidimensional array in PHP. The problem was, I needed to sort the multidimensional array, but based on just one element. Here’s the easiest, fastest solution that I found from the array_multisort function page of PHP (thanks to zequez at gmail dot com!).

Here’s his original solution taken from that page:

```\$multiArray = Array(
Array("id" => 1, "name" => "Defg"),
Array("id" => 2, "name" => "Abcd"),
Array("id" => 3, "name" => "Bcde"),
Array("id" => 4, "name" => "Cdef"));
\$tmp = Array();
foreach(\$multiArray as &\$ma)
\$tmp[] = &\$ma["name"];
array_multisort(\$tmp, \$multiArray);
foreach(\$multiArray as &\$ma)
echo \$ma["name"]."";

/* Outputs
Abcd
Bcde
Cdef
Defg
*/ ```

My requirements are similar, but not exactly the same, and so I had to tweak the code slightly to fit my needs. I had a huge table of values, but needed to sort the entire multidimensional array by the second column, which was a column of price values. Here’s a simplified version of my tweaked code:

```\$itemtable = Array(
Array(1, 253.12),
Array(2, 569.24),
Array(3, 85.69),
Array(4, 91.27));
\$tmp = Array();
foreach(\$itemtable as &\$ma) {
\$tmp[] = &\$ma; //this just refers to the 2nd element of my 2-element array
}
array_multisort(\$tmp, \$itemtable); ```

And that’s it! That’s the fastest, easiest way that I found to sort a multidimensional array, but based on just one element.