• User

    Riconoscimento valori in array

    Buonasera a tutti. Vorrei proporvi un mio problema molto fastidioso per il semplice motivo che la sua risoluzione mi sembra molto sciocca ma non riesco a venirne a capo. Mi spiego meglio postando dapprima il codice:

    [PHP]
    while($righe=mysql_fetch_row($miaquery)){
    $risultato[]=$righe;} //Prima costruisco un array dai valori presi dal db.
    [/PHP]

    Preciso che il risultato con il print_r($risultato) appena creato è qualcosa del genere:

    Array ( 
                          [0] => Array ( 
                                               [0] =>// Valore primo elemento ricavato dal db.
                                              ) 
    
                           [1] => Array ( 
                                               [0] =>// Valore secondo elemento dal db
                                               )
                          )
    
    

    Il codice prosegue. Eccone il pezzo: [PHP]

    $id=ElementoPresoDalDB; //Volutamente assegno ad una variabile il valore CHE SO PER CERTO che si ricava dal mysql_fetch_row().

    //A questo punto voglio vedere se questa variabile appena assegnata sia nell'array creato. Per una maggiore sicurezza stampo gli elementi dell'array così:

    foreach($risultato as $elemento){
    $elemento= implode($elemento); //Questo per ovviare all'errore di conversione in stringa a partire da PHP 5.4 (se non erro)
    echo "<br />".$elemento. "<br />";}

    // In questo modo HO gli elementi che ho estratto dal db. Adesso prova finale. Uso in_array() per verificare la presenza di $id nell'array $risultato:
    if(in_array($id,$risultato)){
    echo "L'elemento è nell'array";
    }else{
    echo "L'elemento non è nell'array";}

    [/PHP]

    E woilà... magia delle magie..... mi compare il risultato dell'else! -.- Ma io dico: come è possibile! Non trovo una spiegazione plausibile a questo. Cio che mi lascia dubbioso è il risultato del print_r() citato sopra. Quell'array-multidimensionale non tanto mi convince 😕

    Spero sappiate darmi una mano. Ringrazio coloro che vorrano aiutarmi, anticipatamente 🙂


  • ModSenior

    Ciao icex,
    puoi postare, senza modificare, gli output di:
    [php]
    print_r($risultato);
    print_r($id);
    [/php]


  • User

    Grazie della risposta Thedarkita! 🙂 Allora per quanto riguarda il primo** print_r()** il risultato è praticamente quello che ho scritto sopra però tutto su una sola riga. Per quanto riguarda il secondo, non c'è niente di ché da vedere dato che è semplicemente un numero intero (cioè il mysql_fetch_row($miaquery) restituisce l'array $risultato composto da valori come 1,2,3 ecc.).

    In ogni caso, sono riuscito ad ovviare a questo semplice problema scrivendo:
    [PHP]

    if(in_array(array($id),$risultato)){
    echo "L'elemento è nell'array";
    }else{
    echo "L'elemento non è nell'array";}
    [/PHP]

    Questo in virtù dell'array multidimensionale 😉 Adesso però vorrei capire una cosa. Qui non so proprio come fare.

    Vorrei utilizzare la funzione array_search() (è questo il mio vero scopo 😉 ) per cercare nell'array $risultato i valore $id. In questo modo mi verrà restituita la chiave corrispondente se tale valore è presente nell'array.
    Cosa voglio fare? Semplice (teoricamente :?): assegnare un current() alla chiave corrispondente in maniera tale che con un **next()**possa recuperare la key successiva.

    Spero di non aver chiesto troppo e di non aver toccato la sfera delle stupidaggini 🙂 grazie della disponibilità 🙂


  • User

    Or bene 🙂 mi sa tanto che sono arrivato ad una conclusione. Problema semplice. Risoluzione altrettanto. Pensavo a qualcosa di più controverso a dir la verità. :rollo:
    Posto nella speranza che possa essere di aiuto a qualcuno:

    [PHP]
    $key=array_search(array($id),$risultato); //Ricavo la chiave corrispondente al valore $id nell'array $risultato con la funzione array_search()
    $valorecorrente=implode($risultato[$key]);// Permettiamo di convertire la stringa per gli ultimi PHP (permettetemelo di dire che è una rogna sta' cosa però >.< )
    $valorecorrente = current($risultato[$key]); // Assegno la variabile precedentemente dichiarata alla funzione current, facendo attenione a passarle come parametro l'array $risultato con l'indice $key
    echo $valorecorrente; // Mi restituirà il valore corrispondente ad $id, con la differenza che questa volta sta leggendo l'array e non la variabile! 😄
    $valoresuccessivo = implode(next($risultato)); // Solita storia della conversione della stringa, con la differenza che ci passo come parametro la funzione next() avente a sua volta come parametro l'array $risultato (senza la [$key] però!!!)
    echo "<br />".$valoresuccessivo; //Stampo a video il risultato e....[/PHP]

    .... ecco qua! Giochetto finito 🙂 So che può sembrare una cosa sciocca ma ieri sera ero entrato proprio in loop (a proposito di programmazione) 😄

    Vabbè, a parte la freddura, spero che questa piccola procedura (che spero sia commentata a dovere) sia di aiuto a qualche povero sventurato 🙂
    Alla prossima raga!