Ordinare array in base alla lunghezza dei valori

  • Creatore Discussione Creatore Discussione c02y
  • Data di inizio Data di inizio

c02y

Utente Attivo
30 Nov 2012
30
0
0
Devo ordinare un array in base alla lunghezza dei valori.

Array ( [0] => gianni [1] => alberto [2] => luca [3] => vincenzo [4] => annamaria )

So che esiste la funzione asort, ma quest'ultima ordina ordina l'array in ordine crescente in base al valore degli elementi.

Qualcuno sa aiutarmi?:D
 
ciao
prova così

PHP:
<?php
//Array ( [0] => gianni [1] => alberto [2] => luca [3] => vincenzo [4] => annamaria ) 
$nomi[0]="gianni";
$nomi[1]="alberto";
$nomi[2]="luca";
$nomi[3]="vincenzo";
$nomi[4]="annamaria";
$n=count($nomi);
for($k=0; $k< ($n-1);$k++){
	for($j=($k+1); $j <$n;$j++){
		if(strlen($nomi[$k]) > strlen($nomi[$j])){
			$tr=$nomi[$j];//visto che non esiste in php la funzione swap
			$nomi[$j]=$nomi[$k];
			$nomi[$k]=$tr;
		}
	}
}
//**test
foreach($nomi as $ch => $val){
	echo "$val <br />";
}
?>
 
Testato il ciclo di Borgo che ordina in modo crescente propongo un alternativa in ordine decrescente
PHP:
<?php
$nomi = array();
$nomi[0] = "gianni";
$nomi[1] = "alberto";
$nomi[2] = "luca";
$nomi[3] = "vincenzo";
$nomi[4] = "annamaria";

foreach ($nomi as $key => $value) {
    $nomi[strlen($value)] = $value;
    unset($nomi[$key]);
}
krsort($nomi);
var_dump($nomi);
?>
non ho commentato ma sono poche righe :dormo:
 
ciao
prova così

PHP:
<?php
//Array ( [0] => gianni [1] => alberto [2] => luca [3] => vincenzo [4] => annamaria ) 
$nomi[0]="gianni";
$nomi[1]="alberto";
$nomi[2]="luca";
$nomi[3]="vincenzo";
$nomi[4]="annamaria";
$n=count($nomi);
for($k=0; $k< ($n-1);$k++){
	for($j=($k+1); $j <$n;$j++){
		if(strlen($nomi[$k]) > strlen($nomi[$j])){
			$tr=$nomi[$j];//visto che non esiste in php la funzione swap
			$nomi[$j]=$nomi[$k];
			$nomi[$k]=$tr;
		}
	}
}
//**test
foreach($nomi as $ch => $val){
	echo "$val <br />";
}
?>

Testato il ciclo di Borgo che ordina in modo crescente propongo un alternativa in ordine decrescente
PHP:
<?php
$nomi = array();
$nomi[0] = "gianni";
$nomi[1] = "alberto";
$nomi[2] = "luca";
$nomi[3] = "vincenzo";
$nomi[4] = "annamaria";

foreach ($nomi as $key => $value) {
    $nomi[strlen($value)] = $value;
    unset($nomi[$key]);
}
krsort($nomi);
var_dump($nomi);
?>
non ho co/mmentato ma sono poche righe :dormo:

Ragazzi grazie per le risposte, però mi servirebbe un metodo dinamico, perché i nomi nell'array cambiano, non sono sempre gli stessi
 

Discussioni simili