• User Newbie

    Valore variabile non riconosciuto

    Salve sono nuovo di questo forum e subito ho un quesito da porre.
    Dopo aver popolato un array da una tabella MySql ne cerco il suo valore all'intreno di una stringa e quindi la sua posizione all'interno di una stringa stessa.
    Il problema stà nel fatto che quando cerco la posizione della variabile popolata attraverso la tabella MySql non trovo la sua posizione nella stringa trovato; mentre quando popolo la stringa dandole un valore predefinito tutto funziona correttamente e trovo la sua posizione
    Sperando d'essere stato chiaro comunque Vi posto il codice dei due esempi

    <?php$mysql_array = "SELECT word FROM twords"; //Valori in tabella: Ieri, Oggi, Domani, Dopodomani$result_array = $conn->query($mysql_array);$testo= "buongiorno oggi come stai "; while($myrow = $result_array->fetch_array(MYSQLI_ASSOC)) { $parole[] = $myrow["word"]; } foreach($parole as $cerca) {if((stristr($testo, $cerca)) !== FALSE) { echo "trovata la parola $cerca "; $posizione =strpos($stringa, $cerca);echo $posizione."<---<br />";// **** la posizione non viene trovata *****} }// **** CONTROPROVA FUNZIONANTE *********foreach($parole as $cerca) {if((stristr($testo, $cerca)) !== FALSE) { echo "trovata la parola $cerca "; $cerca="oggi";$posizione =strpos($stringa, $cerca);echo $posizione."<---<br />";// **** la posizione VIENE trovata *****} }?>


  • Community Manager

    Provo a spostarti..benvenuto Bonann e scusa il ritardo 🙂


  • Moderatore

    Ciao bonann23 e benvenuto,
    da quello che vedo in realtà sono entrambe errate le ricerche. La seconda ti funziona semplicemente perchè sovrascrivi $cerca come variabile con "oggi", sovrascrivendo a malo modo il dato effettivo del ciclo foreach.
    Detto questo, sbagli l'approccio.
    Direttamente dall'array estratto dal database prova ad utilizzare questa funzione:
    [PHP]
    <?php
    function my_search($haystack) {
    $needle = 'value to search for';
    return(strpos($haystack, $needle)); // or stripos() if you want case-insensitive searching.
    }

    $matches = array_filter($your_array, 'my_search');
    ?>
    [/PHP]
    Fammi sapere.