2

Possible Duplicate:
How do I sort a multidimensional array in php

I have value array and want to sort the value based on alphabetical order

my current array

   $original_array = array(
       array('id' => 123456,  'name'=>michael),
       array('id' => 222222,  'name'=>harolds),
       array('id' => 1111111, 'name'=>albert)
   );

so the result I looking is after sort the array as shown below

   $original_array = array( 
      array('id' => 1111111, 'name' => albert),
      array('id' => 222222,  'name' => harolds),
      array('id' => 123456,  'name' => michael)
   );
Community
  • 1
  • 1
MrPixel
  • 45
  • 1
  • 8

3 Answers3

5

This is the type of thing that usort() is used for:

$original_array = array(array('id'=>123456,'name'=>'michael'),array('id'=>222222,'name'=>'harold'),array('id'=>1111111,'name'=>'albert'));

function alphasort($a, $b) {
    if ($a['name'] == $b['name']) {
        return 0;
    }
    return ($a['name'] < $b['name']) ? -1 : 1;
}

usort ($original_array,'alphasort');
var_dump($original_array);
Mark Baker
  • 209,507
  • 32
  • 346
  • 385
  • Woww thanks for thesuper fast reply mate...actually I've been paly with usort in the 1st places but not pass any function in 2nd parameters in usort methods ...my bad...anyway thanks mate – MrPixel Dec 21 '11 at 10:15
  • @user637852 - You should accept this answer to credit him. :) – planet x Dec 21 '11 at 10:21
1

It is very easy, just do it like this:

$array = array(
    array( 'id' => 123456,  'name' => michael ),
    array( 'id' => 222222,  'name' => harolds ),
    array( 'id' => 1111111, 'name' => albert )
);

usort( $array, function( $a, $b ) {
    return strcmp( $a['name'], $b['name'] );
} );

and you will get what you need! If your php version is 5.2.x or less, do it in this way:

$array = array(
    array( 'id' => 123456,  'name' => michael ),
    array( 'id' => 222222,  'name' => harolds ),
    array( 'id' => 1111111, 'name' => albert )
);

function mysort_func_531994( $a, $b ) {
    return strcmp( $a['name'], $b['name'] );
}

usort( $array, 'mysort_func_531994' );

Read manual for following functions:

  1. usort function
  2. strcmp function
Eugene Manuilov
  • 4,271
  • 8
  • 32
  • 48
1

You can try following way.

$original_array = array(
array('id'=>123456,'name'=>'michael'),
array('id'=>222222,'name'=>'harolds'),
array('id'=>1111111,'name'=>'albert')
);

foreach ($original_array as $key => $row) {
    $volume[$key]  = $row['id'];
    $edition[$key] = $row['name'];
}



array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $original_array);

Prasad.

Prasad Rajapaksha
  • 6,118
  • 10
  • 36
  • 52