2011-12-21 2 views
2

Possible en double:
How do I sort a multidimensional array in phpvaleur de tableau de tri dans l'ordre alphabétique

Je tableau de valeurs et que vous souhaitez trier la valeur en fonction de l'ordre alphabétique

mon tableau actuel

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

donc le résultat que je recherche est après trier le tableau ci-dessous comme indiqué

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

Répondre

5

C'est le genre de chose que usort() est utilisé pour:

$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); 
+0

Woww merci pour le super rapide mate de réponse ... en fait j'ai été paly avec usort dans les 1ers endroits mais ne passais aucune fonction dans les 2èmes paramètres dans les méthodes d'usort ... mon mauvais ... de toute façon merci mate – user637852

+0

@ user637852 - Vous devez accepter cette réponse pour le créditer. :) –

0

Vous pouvez essayer manière suivante.

$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.

0

Il est très facile, il suffit de faire comme ceci:

$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']); 
}); 

et vous obtiendrez ce dont vous avez besoin! Si votre version de php est 5.2.x ou moins, le faire de cette façon:

$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'); 

manuel de lecture pour les fonctions suivantes:

  1. fonction usort
  2. strcmp fonction
Questions connexes