• User

    Chiedo aiuto per array

    Ciao a tutti,
    premetto che non sono bravissimo con php però di norma ottengo sempre i risultati che mi servono.
    Questa volta purtroppo ho bisogno di una mano.
    [php]
    $arr1 = array("parola1", "parola2", "parola3", "parola4", "parola5");
    $arr2 = explode(",", $post->post_content);
    [/php]Come faccio a confrontare ed avere l'output della parola che si trova all'interno di $arr2?
    Grazie in anticipo.


  • ModSenior

    Ciao DigItalWarrior,

    Non ho ben capito che tipo di confronto vuoi fare, però la fuzione explode ti restituisce un array nello stesso formato del tuo $arr1.


  • User

    Ciao Thedarkita, grazie per la tua risposta.
    Si infatti per quanto riguarda quello che restiruiscono i due array va benissimo. Quello che non riesco a fare è confrontare i due array e se almeno una delle parole è uguale restituirla a video.
    Es: Se una delle parole in $arr1 è presente anche in $arr2 allora stampo la parola trovata (oppure faccio un altra operazione).
    Grazie


  • ModSenior

    Per avere le parole che sono in entrambi gli array puoi usare la funzione array_intersect.


  • User

    Ok, i risultati mi tornano però ho un altro problema, anzi, non so come fare e quindi chiedo consiglio.
    Utilizzando lo script come proposto in alto:
    [php]
    $arr1 = array("parola1", "parola2", "parola3", "parola4", "parola5");
    $arr2 = explode(",", $post->post_content);
    $result = array_intersect($arr1, $arr2);
    print_r($result);
    [/php]mi da ovviamente il risultato comprensivi di indici e cioé [LEFT][php]
    Array ( [1] => parola1)[/php]Come faccio a fare in modo che mi dia solo la parola cercata senza gli indici e cioé soltanto "parola1" senza Array([1]==> ecc?
    Se uso echo $result senza indice ovviamente mi da solo array() come risultato, se metto un indice ad esempio [1] poi non è detto che tutte le parole che cerco abbiano indice [1].

    Scusate l'ignoranza ma questo è il mio primo vero array e non so proprio come fare.
    [/LEFT]


  • ModSenior

    Usando la funzione array_keys, puoi ottenere un nuovo array avente gli indici di result, e usare gli indici progressivi di questo nuovo array per sapere in quale indice di result hai i dati.
    Ti ricordo che puoi usare anche un ciclo foreach per stampare un array e risparmi tutti i passaggi che ti ho scritto ora, dipende da cosa devi fare...


  • User

    Probabilmente non mi spiego bene...
    Per le mie conoscenze le tue spiegazioni sono un po' complicate.
    Quello che vorrei ottenere pensavo di averlo spiegato e cioè la parola o le parole esistenti in tutte e due gli array vanno stampate a video.
    Magari se potessi farmi un banalissimo esempio riuscirei a capire meglio cosa vuoi dire.


  • ModSenior

    [php]
    $arr1 = array("parola1", "parola2", "parola3", "parola4", "parola5");
    $arr2 = explode(",", $post->post_content);
    $results = array_intersect($arr1, $arr2);
    foreach($results AS $result)
    echo $result;
    [/php]


  • User

    Ma dai, guarda in quale banalità sono andato a perdermi. Tra le tante prove che ho fatto c'era anche lo script esattamente come me lo stai proponendo ma non avevo considerato il fatto... dato che tutte le parole del secondo array iniziavano con la maiuscola non ne riuscivo a venire a capo.
    Ho peccato proprio di stupidità.
    Ad ogni modo grazie infinite per il tuo supporto e scusami per la cretinaggine.


  • ModSenior

    Non ti preoccupare, lieto di esserti stato utile.
    Alla prossima. :ciauz: