Ho un array $a[$i] con $i=1,...,50.
Ho un secondo array $b[$i] (idem).
Voglio creare un terzo array chiamiamolo $a_ordinato[$i] con $i=1,..,50 dove le prime 45
posizioni sono ordinate secondo $a e le dal 46° al 50°, visto che hanno tutte $a=0 dovrebbero essere ordinate secondo $b.
Per ordinarle rispetto ad $a ho fatto rsort($a_ordinato) visto che mi serve l'ordine dal più grande al più piccolo.
Ora spiego meglio l'ultimo pezzo di ordinamento. Poniamo che:
$a[5]=0; $a[13]=0; $a[21]=0; $a[33]=0; $a[42]=0.
(Tutti gli altri non menzionati hanno valore >0 e quindi hanno una posizione nell'array a_ordinato che va dalla 1 alla 45).
Per il momento il comando rsort ha posizionato questi numeri in coda all'array ma io non li voglio con questo ordine ma da quello derivante da questa operazione:
prendo i valori
$b[5]=6; $b[13]=9; $b[21]=5; $b[33]=7; $b[42]=9.
E quindi li voglio in ordine crescente in modo che
$a_ordinato[46]=21
$a_ordinato[47]=5
$a_ordinato[48]=33
$a_ordinato[49]=13
$a_ordinato[50]=42
A parità deve venire prima il numero d'ordine più basso.
So per certo che gli indici che hanno valore 0 nel'array $a sono 5 e sempre 5.
C'è un modo veloce per farlo? Spero di essere stato sufficientemente chiaro.
Grazie.