ordinare un array bidimensionale

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
la funzione ordina un array bidimensionale del tipo
array[chiave uno][chiave due] = valore
ordina per prima secondo la 'chiave uno' poi in funzione della scelta secondo 'chiave due' o secondo il 'valore'
la funzione ricrea un array ordinato secondo la scelta
PHP:
<?php
function ordina_arrbi($a,$q){
	//$a l'array multidimensionale da ordinare
	//$q scelta ordinamento: se == 0 per seconda chiave, se == 1 per valore
	$q=(int)$q;
	//verifica errori
	if(!is_array($a)){//non è un array
		return FALSE;
	}
	if($q <0 || $q >1){//inserito dato ordinamento errato
		return FALSE;
	}
	ksort($a);//ordino la prima chiave e ciclo per ordinare il resto
	foreach($a as $val => $ch){//ciclo il primo array
		if(!is_array($ch)){//non è un array bidimensionale
			return FALSE;
		}else{
			if($q==0){
				ksort($ch);//ordino per la seconda chiave
				foreach($ch as $val_s => $ch_s){//ricreo l'array ordinato per I° e II° chiave
					$ar_o[$val][$val_s]=$ch_s;
				}
			}else{
				natsort($ch);//ordino per valore
				foreach($ch as $val_s => $ch_s){//ricreo l'array ordinato per I° chiave e valore
					$ar_o[$val][$val_s]=$ch_s;
				}
			}
		}
	}
	return $ar_o;//ritorno l'array ordinato
}
//*****TEST *********
//l'array da ordinare
$arr['Verdi']=array('Gennaro'=>3, 'Artemisia'=>1, 'Zuzzurro'=>2);
$arr['Bianchi']=array('Wolfang'=>2, 'Roberta'=>0, 'Antonia'=>3);
$arr['Rossi']=array('Semiramide'=>2, 'Antonia'=>2, 'Umberto'=>2, 'Abelarda'=>1);
$arr['Forti']=array('Zelminia'=>3, 'Lavinia'=>2);
var_dump($arr); echo "<br>";
$arr_ordinato=ordina_arrbi($arr,0);//ordino per I° e II° chiave
if($arr_ordinato != FALSE){
	echo "<pre>";
	echo "array ordinato per I° e II° chiave<br />";
	var_dump($arr_ordinato);
	echo "</pre>";
}else{
	echo "errore";
}
$arr_ordinato=ordina_arrbi($arr,1);//ordino per per I° chiave e il valore
if($arr_ordinato != FALSE){
	echo "<pre>";
	echo "array ordinato per I° chiave e valore<br />";
	var_dump($arr_ordinato);
	echo "</pre>";
}else{
	echo "errore";
}
?>
è evidente che non è possibile ordinare per la II° chiave e contemporaneamente per il valore
 
Discussioni simili
Autore Titolo Forum Risposte Data
F Ordinare array bidimensionale PHP 2
P [PHP] ordinare un array multidimensionale in modo personalizzato PHP 2
M Ordinare array (multidimensionale)? PHP 3
M Ordinare array multidimensionale con esclusioni Javascript 0
C Ordinare array in base alla lunghezza dei valori PHP 3
C Ordinare array multidimensionali PHP 0
C Ordinare alfabeticamente un array e ordinare un secondo array in funzione del primo. Javascript 12
R Ordinare array in base al valore PHP 7
S ordinare array di date PHP 4
R Ordinare array in base al valore e alla key PHP 1
M Ordinare una query join PHP 2
L [PHP] ordinare per data PHP 3
F [HTML] Google fogli ordinare per colonne HTML e CSS 0
T [PHP] ordinare un campo varchar che contiene numeri PHP 6
Trapano Query in php come ordinare per data e anche per ora PHP 7
L [PHP] ordinare xml PHP 0
Trapano [HTML] Ordinare indirizzi, creando un percorso HTML e CSS 3
M Ordinare i valori in query group by PHP 4
L Ordinare articoli dentro categorie e tag in ordine alfabetico wordpress WordPress 1
ste80 ordinare dati da file di testo PHP 3
R Ordinare alfabeticamente partendo da una PAROLA MySQL 0
M Ordinare visualizzazione record tramite form con input "text" PHP 2
xone Ordinare tramite menù a tendina i risultati di una query già stampati MySQL 0
M [PHP]Ordinare dati secondo prezzo PHP 2
zighy ordinare risultati specifici PHP 20
D Ordinare i risultati di una query dalla fine della tabella MySQL 13
ivarello Ordinare dati Var in ordine numerico PHP 9
C Ordinare parole in base alla lunghezza PHP 1
Trapano Ordinare risultati MySQL 6
T.W. Aiuto Per Ordinare Risultati Ricerca Da File CSV PHP 2
valient13 ordinare in ordine decrescente la lista PHP 2
P [ASP] [Grauito] Ordinare categoria (era: reder by Cat) Offerte e Richieste di Lavoro e/o Collaborazione 1
G Ordinare query PHP 2
P Ordinare e impaginare una tabella contemporaneamente Javascript 1
novello88 MySQL ORDER BY [Era: ordinare i risultati di una database MySQL] MySQL 1
Monital ordinare il risultato di una query con variabili unite PHP 32
R Come ordinare gli articoli per data? Webdesign e Grafica 5
Monital ordinare in una tabella risultati query PHP 10
G ordinare i risultati di una query PHP 4
A Ordinare query sql in base ai risultati di ricerca PHP 1
M Ordinare il secondo elemento di uno split() PHP 10
N Ordinare per totali Database 0
G VBA e ordinare celle relativamente in Excel 2007 Windows e Software 0
S - Ordinare files uplodati - PHP 0
frankiedeguello Ordinare file per data di creazione PHP 1
T Ordinare dati di un Recordset [era:Grosso problema, chi mi aiuta?] Classic ASP 2
F ordinare una form con uno script php PHP 2
F FORM - ordinare l'email... HTML e CSS 3
J ordinare per nome Database 1
M Array associativi php su 2 campi mysql PHP 10

Discussioni simili