# multi-dimensional array sorting by index (like a table)

#### Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

•  Subject
• Author
• Posted on
I am guessing there is no php function to handle sorting an array as
you could a database? Meaning I want a multi-dimensional array sorted
by index 0, and "sub sorting" (whatever you call it) using index 4?

Thanks
Mike

## Re: multi-dimensional array sorting by index (like a table)

Michael Joel wrote:

write one.
:-)

Then there is....

## Re: multi-dimensional array sorting by index (like a table)

On Tue, 27 Dec 2011 15:25:29 -0500, Michael Joel wrote:

Yes, you write a user sort that compares two elements, something like:

function mysort(\$a, \$b) {
if (\$a[0] > \$b[0]) return 1;
if (\$a[0] < \$b[0]) return -1;
if (\$a[4] > \$b[4]) return 1;
if (\$a[4] < \$a[4]) return -1;
return 0;
}

then

usort(\$arr, "mysort");

You might want error handling in mysort to make sure that \$a and \$b are
both actually arrays of at least 5 elements size.

Rgds

Denis McMahon

## Re: multi-dimensional array sorting by index (like a table)

Michael Joel schrieb:

Have a look at http://de3.php.net/array_multisort .

Greetings,
Thomas

--
Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!
(Coluche)

## Re: multi-dimensional array sorting by index (like a table)

On Wed, 28 Dec 2011 01:03:22 +0100, Thomas Mlynarczyk

Yes I saw that but I couldn't seem to get it to work.
It says it will sort a multi-dimensional array by an index.
I tried and it just kept spitting errors at me. I test the arrays to
make sure they contained data I expected.

Mike

## Re: multi-dimensional array sorting by index (like a table)

On Tue, 27 Dec 2011 19:24:05 -0500, Michael Joel wrote:

The way I read it (example 3), assuming your 2d array is \$data containing
1d arrays of 5 or more elements:

\$k1 = \$k2 = array();
foreach (\$data as \$key => \$row) {
\$k1[\$key] = \$row[0];
\$k2[\$key] = \$row[4];
}
array_multisort(\$k1, SORT_DESC, \$k2, SORT_DESC, \$data);

but I haven't tried this.

Mind you, I haven't tried the other solution that I posted earlier
either, although I have used similar code in practice.

Rgds

Denis McMahon

## Re: multi-dimensional array sorting by index (like a table)

wrote:

Ahh. I see how it is working now.
This I think is what I am needing - will test it.

Thanks all
Mike

## Re: multi-dimensional array sorting by index (like a table)

wrote:

Yes it is working it appears.
That saves a lot of work.
I can use one table instead of 2 or 3.

Thanks all
Mike