- Home
- Categorie
- Coding e Sistemistica
- Coding
- Ordinare array di array
- 
							
							
							
							
							
Ordinare array di arraySalve a tutti! Avrei bisogno di un consiglio tecnico... 
 vorrei ordinare un array composto da vari campi:**array** *(size=12)* 0 => **object**(*stdClass*)*4*] *public* 'idcat' => int 8 *public* 'dscLng' => string '' *(length=0)* *public* 'ordVis' => int 10 1 => **object**(*stdClass*)*5*] *public* 'idcat' => int 19 *public* 'dscLng' => string '' *(length=0)* *public* 'ordVis' => int 30 2 => **object**(*stdClass*)*6*] *public* 'idcat' => int 20 *public* 'dscLng' => string '' *(length=0)* *public* 'ordVis' => int 40 ```vorrei appunto ordinare tale array per 'ordVis' prima di utilizzarlo in un foreach!Grazie in anticipo :)
 
- 
							
							
							
							
							
Ciao anu, 
 postresti cercare un algoritmo di ordinamento (merge sort o quicksort, ad esempio) ed implementarlo a dovere nel tuo codice. 
 
- 
							
							
							
							
							
Prova in questo modo (N.B. $array è l'array che vuoi ordinare): 
 [PHP]
 $chiavi = array ();
 foreach ( $array as $key=>$value ) {
 $chiavi [$key] = $value['ordVis'];
 }
 array_multisort ( $chiavi, SORT_ASC, $array );
 print_r ( $array );[/PHP]
 
- 
							
							
							
							
							
Hai bisogno di usort. 
 Nel tuo esempio sono già ordinati comunque questo funziona[PHP] 
 $a = array(
 array(8,'',10),
 array(19,'',30),
 array(20,'',40)
 );function cmp($a, $b){ 
 if($a[2] == $b[2])
 return false;
 return ($a[2] < $b[2]) ? -1 : 1;
 }usort($a,"cmp"); print_r($a); 
 [/PHP]
 
- 
							
							
							
							
							
Grazie infinite, 
 siete stati molto chiari e precisi!A buon rendere  
 
- 
							
							
							
							
							
Grazie a tutti per le risposte, 
 quello che cercavo tuttavia era questo:<?php $test = array(); $test[0]['name'] = 'zoe'; $test[0]['email'] = '[email protected]'; $test[0]['phone'] = '123-123-1234'; $test[0]['trick'] = 'mezopia'; $test[1]['name'] = 'Amanda'; $test[1]['email'] = '[email protected]'; $test[1]['phone'] = '123-123-1235'; $test[1]['trick'] = 'youarecool'; $test[2]['name'] = 'john'; $test[2]['email'] = '[email protected]'; $test[2]['phone'] = '123-123-3333'; $test[2]['trick'] = 'goneinanhour'; print_r(columnSort($test, 'name')); function columnSort($unsorted, $column) { $sorted = $unsorted; for ($i=0; $i < sizeof($sorted)-1; $i++) { for ($j=0; $j<sizeof($sorted)-1-$i; $j++) if ($sorted[$j][$column] > $sorted[$j+1][$column]) { $tmp = $sorted[$j]; $sorted[$j] = $sorted[$j+1]; $sorted[$j+1] = $tmp; } } return $sorted; } ?>trovato su php.net Spero possa servire ad altri!