Ordinare Array in Php

20.01.2014 08:28

hp possiede una serie di funzioni che permettono di ordinare array.

Quindi ecco qui un bel promemoria delle varie funzioncine relative all’ordinamento.

Ordinare gli elementi di un array

La funzione sort() ordina in maniera crescente l’array in base ai suoi elementi

$vett = array(6,1,9,4);
sort($vett);
print_r($vett);

avremo in output

Array
(
  [0] => 1
  [1] => 4
  [2] => 6
  [3] => 9
)

La funzione rsort() compie la stessa operazione, ma in maniera decrescente

rsort($vett);

asort() ordina l’array in maniera crescente basandosi sul valore degli elementi, ma diversamente da sort() mantiene intatta l’associazione chiavi/valori dell’array.

$vett = array(6,1,9,4);
sort($vett);
print_r($vett);

ed ecco l’output

Array
(
  [1] => 1
  [3] => 4
  [0] => 6
  [2] => 9
)

Tutto ciò è molto utile quando si utilizzano array associativi.

Idem per arsort(), che però ordina in maniera decrescente.

-

Ordinare le chiavi di un array

La funzione ksort() ordina in maniera crescente l’array in base al valore delle sue chiavi.

ksort($vett);

Stesso discorso per krsort(), che ordina in maniera decrescente.

-

Ordinamento naturale

La funzione natsort() ordina le stringhe contenenti valori numerici in modo “naturale”, ovvero più vicino alla logica umana, rispetto agli algoritmi usati dalle altre funzioni di ordinamento.

In questo modo, inoltre, le associazioni chiavi/valori sono preservate, così come accade utilizzando asort().

Ma vediamo un esempio.   Questo è l’array da ordinare

$vett = array('A4','A11','B6','A2','B400','B3','B31');

Ordinandolo con sort() avremo

Array
(
  [0] => A11
  [1] => A2
  [2] => A4
  [3] => B3
  [4] => B31
  [5] => B400
  [6] => B6
)

Ecco invece l’ordinamento con natsort()

Array
(
  [3] => A2
  [0] => A4
  [1] => A11
  [5] => B3
  [2] => B6
  [6] => B31
  [4] => B400
)

Da questo confronto si può vedere come natsort() ordini numericamente la parte numerica delle stringhe.

La funzione natcasesort() è identica, tranne che per il fatto che non è case sensitive e quindi non distingue maiuscole e minuscole.