ordinamento array multidimensionale per un valore ottenuto tramite una funzione

  • Creatore Discussione Creatore Discussione ely2402
  • Data di inizio Data di inizio

ely2402

Nuovo Utente
3 Mag 2013
1
0
0
Ciao a tutti, sono nuova in php e ho un array che non riesco ad ordinare alfabeticamente partendo dai codici delle lingue che estraggo:

la query è:

PHP:
	$query = "SELECT service_id, partenza, arrivo
				FROM ".$dbtblPrefix."_pricings 
				
			 ORDER BY service_id, partenza";
	if (!($result = @ mysql_query($query, $connection)))  show_db_error();
	// query DB and save in array
	while ($row = @ mysql_fetch_array($result)) {
		$array_service_arrivo[ $row['service_id'] ][ $row['partenza'] ][] = $row['arrivo'] ;
	}

Da cui ottengo il seguente array multidimensionale, dove per ogni servizio (1,2,3) ottengo un array con lingua di partenza che a sua volta contiene un array con lingua di arrivo:


Array ( [1] => Array ( [AM] => Array ( [0] => EN ) [DE] => Array ( [0] => JA [1] => IT [2] => KO ) [EN] => Array ( [0] => IL [1] => ZU [2] => LA [3] => SD [4] => ET [5] => GA [6] => ZH-s [7] => AM [8] => ARM [9] => CY [10] => SU [11] => MN [12] => DE [13] => HA [14] => KN [15] => GU [16] => TH [17] => KA [18] => BN [19] => IT [20] => TK [21] => KO [22] => XH [23] => PS [24] => NO [25] => ST [26] => LO [27] => AS [28] => ES [29] => PG [30] => JA [31] => PT [32] => KM [33] => PT-b [34] => MY [35] => OM [36] => OR [37] => NE [38] => HM [39] => RW [40] => RU [41] => FR [42] => IS [43] => SI [44] => KK [45] => LN [46] => SO [47] => TI ) [FR] => Array ( [0] => KO [1] => ES [2] => NO [3] => IT [4] => JA [5] => DE ) [IS] => Array ( [0] => EN ) [IT] => Array ( [0] => JA [1] => PT [2] => PT-b [3] => ZH-s [4] => RU [5] => DE [6] => FR [7] => EN [8] => NO ) [JA] => Array ( [0] => IT ) [KM] => Array ( [0] => EN ) [LO] => Array ( [0] => EN ) [MY] => Array ( [0] => EN ) [NE] => Array ( [0] => EN ) [NO] => Array ( [0] => FR ) [PG] => Array ( [0] => EN ) [PS] => Array ( [0] => EN ) [RU] => Array ( [0] => IT [1] => ZH-s ) [SI] => Array ( [0] => EN ) [SO] => Array ( [0] => EN ) [TI] => Array ( [0] => EN ) [TK] => Array ( [0] => EN ) [ZH-s] => Array ( [0] => IT [1] => ZH ) [ZU] => Array ( [0] => EN ) ) [2] => Array ( [EN] => Array ( [0] => IT [1] => BG [2] => DE [3] => ES [4] => NL [5] => SV [6] => RO [7] => CA ) [IT] => Array ( [0] => RO [1] => ES-a [2] => RU [3] => FR [4] => DE [5] => BG [6] => EN [7] => EN-a [8] => ES ) ) [3] => Array ( [IT] => Array ( [0] => RU [1] => DE [2] => FR [3] => ES [4] => EN ) ) )

Le lingue di arrivo (ultimo array) devono essere ordinate alfabeticamente in base alla lingua: l'ordinamento sarà diverso in base alla lingua nella quale si vuole visualizzare il sito.
La funzione che uso per ottenere il nome della lingua in base a quella del sito è:

$lingua = getLanguage($lang);

Con il seguente codice non riesco a ricostruire l'array corretto dopo l'ordinamento in base al nome della lingua:

PHP:
foreach($array_service_arrivo as $ser=> $ar_l_part ) {
$ordin=array();
foreach( $ar_l_part as $l_part=> $ar_l_arr ) {
$l_part2 []= $l_part;

foreach( $ar_l_arr //array di lingue arrivo
as $l_arr//posizione nell'array
=> $l_ar_code ) //codici lingue arrivo
{
$array_test[$ser][]=  $l_ar_code;	
$lingua = getLanguage($lang);
$ar_l_arr = $l_ar_code;
$ordin[$l_ar_code]=$lingua[$l_ar_code];
asort($ordin); 
}
}//FOREACH PER ORDINARE
foreach($ordin as $ar_l_arr => $l_ar_code) 
{
$lang_ord_arr=$ar_l_arr;
$array_test[$ser][]=  $l_ar_code;	// NON RIESCO A OTTENERE L'ARRAY COMPLETO CORRETTO 

//FINE 
}
}

Vi ringrazio per l'aiuto
 
Ultima modifica di un moderatore:
ciao
un po' confuso, per vedere se ho capito cosa devi fare ti faccio un esempio ridotto limitato agli indici [1] [DE] [].
a te risulta
Codice:
$array_service_arrivo[1][DE][0] => JA
$array_service_arrivo[1][DE][1] => IT 
$array_service_arrivo[1][DE][2] => KO
e vuoi invece che ti venga ordinato così
Codice:
$array_service_arrivo[1][DE][0] => KO
$array_service_arrivo[1][DE][1] => IT 
$array_service_arrivo[1][DE][2] => JA
cioè ogni array di array deve essere ordinato alfabeticamente secondo il suo valore di lingua.
è giusto?

dimenticavo:
se non vedo male sono gia ordinati per il secondo indice (dalla query)

p.s.
quando scrivi del codice usa gli appositi tag (seconda riga di formattazione del post ultime tre iconcine, nell'ordine CODE, HTML, PHP)
 
Ultima modifica:

Discussioni simili