- Home
- Categorie
- Coding e Sistemistica
- PHP
- Confronto array
-
Confronto array
Salve 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ì...