Gli array multidimensionali che prenderò in considerazione sono tabelle con indici di riga numerici e indici di colonna di stringhe. Quando leggiamo dei dati dal database possiamo estrarre il risultato della query e memorizzarlo in un array bidimensionale e cioè in una tabella. In questi casi basta usare la clausola ORDER BY nell'istruzione sql per ordinare i nostri dati, ma se avessimo nell'array dei campi non presenti nel database oppure i dati nell'array non sono caricati da un database?
Sul sito php.net ho trovato la funzione array_multisort che però presenta un problema: bisogna generare un array per ogni colonna.
Alla fine ho scritto questa funzione che mi sembra più semplice e intuitiva.
La funzione datatable_sort ha tre parametri:
Un esempio di utilizzo.
Sul sito php.net ho trovato la funzione array_multisort che però presenta un problema: bisogna generare un array per ogni colonna.
Alla fine ho scritto questa funzione che mi sembra più semplice e intuitiva.
public function datatable_sort($dtb, $campo, $tipoord){
if (is_array($dtb)){
for ($i = 0; $i<count($dtb)-1; $i++){
for ($j = $i + 1; $j < count($dtb); $j++){
if ($tipoord == "D") { //Decrescente
if ($dtb[$i][$campo] < $dtb[$j][$campo]){
$appoggio = $dtb[$i];
$dtb[$i] = $dtb[$j];
$dtb[$j] = $appoggio;
}
}else { //Crescente
if ($dtb[$i][$campo] > $dtb[$j][$campo]){
$appoggio = $dtb[$i];
$dtb[$i] = $dtb[$j];
$dtb[$j] = $appoggio;
}
}
}
}
}
return $dtb;
}
La funzione datatable_sort ha tre parametri:
- $dtb: l'array tabella;
- $campo: il campo per il quale vogliamo ordinare la tabella;
- $tipoord: può assumere il valore 'D' (descrescente) o qualsiasi altro valore (crescente).
Un esempio di utilizzo.
$data[] = array('volume' => 65, 'edition' => 3);
$data[] = array('volume' => 26, 'edition' => 5);
$data[] = array('volume' => 95, 'edition' => 2);
$dataord = datatable_sort($data, "volume", "D");
0 commenti:
Posta un commento