Domanda

Ho un array multidimensionale in questo modo:

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))

Ho bisogno di ordinare le matrici interne in modo che i dati vengono restituiti in modo naturale la chiave giorni.

cioè in questo modo:

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))

Penso che quello che ho bisogno è una funzione che si applica natsort a un array multidimensionale di $ chiave, ma finora non sono stato in grado di trovare le funzioni che non fanno altro che l'ordinamento standard.

Qualsiasi aiuto?

È stato utile?

Soluzione

Quello che vuoi è usort .

È possibile scrivere un callback per fare il confronto per voi:

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

Esonero di responsabilità: è necessario PHP 5.3.x per questo al lavoro, altrimenti si deve ricorrere a create_function o predefinire la funzione di confronto.

Altri suggerimenti

Un po 'di un approccio diverso:

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

Risultato:

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
        )

)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top