Question

J'ai un tableau multidimensionnel comme ceci:

array ([0] => array ([id] => 1 [name] => john doe [title] => Mr [days] => 10) 
[1] => array ([id] => 2 [name] => Joe Smith [title] => Dr [days] => 22) 
[2] => array ([id] => 3 [name] => John Jones [title] => Mr [days] => 3))

Je dois trier les tableaux internes de telle sorte que les données sont renvoyées dans l'ordre naturel par la touche jours.

i.e. comme ceci:

array ([2] => array ([id] => 3 [name] => John Jones [title] => Mr [days] => 3)
[0] => array ([id] => 1 [name] => john doe [title] => Mr [days] => 10) 
[1] => array ([id] => 2 [name] => Joe Smith [title] => Dr [days] => 22))

Je pense que ce que je dois est une fonction qui applique natsort à un tableau multidimensionnel par $ clé, mais jusqu'à présent, je ne l'ai pas été en mesure de trouver des fonctions que faire autre chose que le tri standard.

Toute aide?

Était-ce utile?

La solution

Qu'est-ce que vous voulez est usort .

Vous pouvez écrire un rappel pour faire la comparaison pour vous:

usort($data, function($a, $b) {
    return ($a['days'] > $b['days'])
           ? 1 
           : ($a['days'] < $b['days'])
             ? -1 
             : 0;
});

Disclaimer: Vous avez besoin PHP 5.3.x pour que cela fonctionne, sinon vous devez recourir à la create_function ou prédéfinir la fonction de comparaison.

Autres conseils

Un peu d'une approche différente:

$days = array();
foreach($array as $key => $val) {
    $days[$key] = $val['days'];
}
array_multisort($days, $array); //$array being your input array

Résultat:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => Jay Doe
            [title] => Mr
            [days] => 3
        )

    [1] => Array
        (
            [id] => 1
            [name] => John Doe
            [title] => Mr
            [days] => 10
        )

    [2] => Array
        (
            [id] => 2
            [name] => Joe Doe
            [title] => Mr
            [days] => 22
        )

)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top