Newsgroup: it.comp.www.php
Titolo: La funzione in_array che... non funziona

Salve a tutti,
non capisco l'errore
           $paro[] = "davide";
           $paro[] = "francesco";
           $sql = "SELECT parola FROM comandi";
           // codice per eseguire la query...
           // ciclo e metto tutto nell'array coma
             while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
                $coma[] = $row;
              }
            foreach($paro as $parsingola){
                if(in_array($parsingola, $zio)){
                    echo "Questa parola è presente";
                }else{
                    echo "Non è presente";
                }
            }
Dunque nel DB è presente la parola "davide", ma la funzione in_array
se ne infischia
e mi dà come risultato "non è presente.
Se invece l'array $coma[] lo creo a mano così
$coma[] = "davide";
$coma[] = "francesco";
$coma[] = "patrizio";
funziona...
Devo dedurre che c'è qualche mia incomprensione nel ciclo che recupera
da DB.
Spero qualcuno mi aiuti a comprendere.
grazie

Piccolo refuso la variabile $zio non c'entra.
Volevo scrivere $coma;

                 if(in_array($parsingola, $zio)){
Qui invece cerchi una stringa in un elemento di array che e` un array 
(vedi sopra), cioe` stai chiedendo
'davide' e` uguale ad array('parola'=>'davide')?
O usi array_walk per cercare il valore, oppure nel while scrivi
$coma[] = $row['parola']
Dipende poi da cosa devi farci.
Ma con opportuni indici, se e` solo questo che devi fare, ti conviene 
qualcosa tipo
$parole = implode("','", $paro);
$query = "select * from comandi where parola in ('".$parole."')";
...
while ($row = mysqli_fetch_array(...)) {
 print $row['parola']. ' è presente";
}
Bye.


in_array($parsingola['parola'],$zio)
La spiegazione è quella di Alessandro, quando leggi dal db crei un
array bidimensionale, coma sará quindi [0]['parola'] = valore e così
via. Nel foreach cicli la 'prima dimensione' devi quindi fare
riferimento alla chiave per accedere al valore.
Andrea

> 'davide' e` uguale ad array('parola'=>'davide')?
ciao a tutti,
io ho un problema che penso sia simile.
Ho un array così composto (stampato usando print_r($my_array)):
Array
(
     [2] => Array
         (
             ['chi'] => valore1
             ['come'] => valore2
             ['dove'] => valore3
             ['quando'] => valore4
         )
     [3] => Array
         (
             ['chi'] => valore1
             ['come'] => valore2
             ['dove'] => valore3
             ['quando'] => valore4
         )
)
Ho provato ad usare
foreach ($myarray as $k => $singlearray)
echo $singlearray["dove"];
ma l'errore che mi esce é:
Notice: Undefined index: dove ... on line 133
come posso risolvere? grazie!

da DB.
print_r($coma) nei due casi ti avrebbe mostrato subito il problema :-)
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!


E' sempre molto più facile chiedere e mangiare la pappa pronta che 
provare a cucinarsela da soli....
Così ti spieghi il perchè di alcune schifezze di codice scritte in ogni 
possibile linguaggio che si trovano in rete....