- Home
- Categorie
- Coding e Sistemistica
- Coding
- Confronto array
- 
							
							
							
							
							
Confronto arraySalve a tutti, 
 non riesco ad eseguire il seguente passaggio:
 ho un array ricavato da un db tramite while ($array_classifica=mysql_fetch_array($dati_classifica)) {codice} che mi restituisce una serie di valori numerici. Io devo confrontare questi dati con una sequenza ordinata di numeri che va da 1 a 286 elencando i numeri della lista che non sono presenti nell'array (in paratica se l'array contiene 3,4,7 la funzione dovrà stampare solo 1,2,5,6..ecc).Come posso fare? 
 Grazie infinite a tutti...
 
- 
							
							
							
							
							
Prova in questo modo: [php] 
 while($array_classifica=mysql_fetch_array($dati_classif ica))
 {
 $found = false;for($i = 0; $i < count($lista_ordinata); $i++) 
 {
 if($array_classifica["valore"] == $lista_ordinata*)
 $found = true;
 }if(!($found)) 
 echo $array_classifica["valore"];
 }
 [/php]Ciao! 
 
- 
							
							
							
							
							
Ciao, 
 ti ringrazio per la celere risposta...purtroppo anche cos' non sembra funzionare. Non mi restituisce alcun valore e poi l'echo finale deve essere di $i e non dell'array originale (i numeri devono essere in pratica quelli mancanti nella lista ordinata).
 
- 
							
							
							
							
							
Ciao, 
 non mi è ben chiara la struttura del primo "array", ma se ad ogni ciclo while $array_classifi ca è un array di dati numerici e ad ogni ciclo devi stampare quelli non presenti nella lista, allora puoi fare così:[PHP] 
 while($array_classifica=mysql_fetch_array($dati_classif ica))
 {
 foreach ($lista_ordinata as $value) if (!in_array($value,$array_classifica)) echo $value." ";
 echo "<br />";} 
 [/PHP]Alessandro 
 
- 
							
							
							
							
							
Grazie Alessandro, 
 tecnicamente lo script che mi hai indicato è corretto, ma in questo caso mi vengono stampata n (il count del secondo array) volte la lista ordinata senza il valore corrispondente del primo array.Per capire meglio: - array_classifica (3,4,7,8)
- array_listaordinata (1,2,3,4,5,6,7)
 l'output finale dovrebbe essere solo 
 1,2,5,6 (i valori della listaordinata-valori della classifica)Nel tuo caso l'output invece è: 
 1,2,4,5,6,7,1,2,3,5,6,7,1,2,3,4,6,7 eccE' possibile secondo te ottenere un' unica lista? 
 Grazie
 
- 
							
							
							
							
							
Molto grezzamente puoi fare così: 
 [php]
 $array_classifica=array();
 while($temp=mysql_fetch_array($dati_classifica))
 {
 $array_classifica[]=$temp['valore'];
 }
 foreach ($lista_ordinata as $value) if (!in_array($value,$array_classifica)) echo $value." ";
 echo "<br />";
 [/php]
 
- 
							
							
							
							
							
Grazie infinite!!! 
 E' perfetto così...