- Home
- Categorie
- Coding e Sistemistica
- PHP
- Ordinare array di array
-
Ordinare array di array
Salve 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!