Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    fare il match fra due array

    Ciao a tutti.
    Non riesco a capire l'errore di questo codice.

    Ho due array e vorrei paragonare i valori del secondo con il primo.
    Se nel primo array non ci sono dei valori, allora questi vengono salvati in un nuovo array.

    Per esempio, il primo array è $source, il secondo è $match

    codice:
    foreach( $match as $val ) {
      if ( !in_array( $val, $source, $true ) ) {
         $result[] = $val;
      }
    }
    tutto dovrebbe funzionare ed è così, tranne per un caso.
    Facciamo la prova con

    codice:
    $source = array (
           'mela',
           'pera',
           'banana',
           'albicocca',
           'uva'
    );
    
    $match = array (
           'mela',
           'pera',
           'banana',
           'albicocca',
           'uva',
           'arancia'
    );

    Mi restituisce
    $result = array
    [0] => 'uva'
    [1] => 'arancia'

    Com diavolo è possibile?
    grazie mille!

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Non so, a me mi restituisce solo arancia.

    L'unica cosa che non sia giusto sarebbe il terzo parametro di in_array() che debba essere true senza $.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    veramente a te lo stesso codice restituisce solo arancia?
    l'ordine degli array è esattamente quello? nel senso che il problema sta nell'ultimo elemento del primo array...

    a, true l'avevo messo non mi ricordo nemmeno io perchè... era un tentativo andato a vuoto!

  4. #4
    il true era per farlo diventare case sensitive nel caso di una stringa.

    Forse il problema sta nel come recupero i due array.
    Ho un campo di testo dove inserisco delle frasi o delle parole e vorrei che si creasse un array con quegli elementi, uno per ogni riga ( e fare un controllo sulle righe vuote, e non inserire doppioni )... sapete come fare?

    grazie!

  5. #5
    Se ho capito bene...
    Codice PHP:
    $source = array (
           
    'mela',
           
    'Pera',
           
    'banaNa',
           
    'alBicocca',
           
    'uVa',
           
    'pompeLmo' // sta solo qui
    );

    $match = array (
           
    'MeLa',
           
    'peRa',
           
    'bAnana',
           
    'albicocca',
           
    'uva',
           
    'arancia' // sta solo qui
    );
    echo 
    '<pre>';
    print_r(array_unique(array_map('strtolower'array_merge($source$match)))); 
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  6. #6
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Originariamente inviato da oly1982
    Se ho capito bene...
    Un valore dovrebbe essere preso solo se sia presente soltanto nel secondo array. Come ho già scritto penso che il codice originale vada bene. Per me almeno funziona.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  7. #7
    Originariamente inviato da neroux
    Un valore dovrebbe essere preso solo se sia presente soltanto nel secondo array. Come ho già scritto penso che il codice originale vada bene. Per me almeno funziona.
    Quindi in pratica il nuovo array deve avere solo gli elementi comuni (case insensitive)?
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  8. #8
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Originariamente inviato da oly1982
    Quindi in pratica il nuovo array deve avere solo gli elementi comuni (case insensitive)?
    solo quelli che sono esclusivamente nel secondo

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  9. #9
    Originariamente inviato da neroux
    solo quelli che sono esclusivamente nel secondo
    sempre se ho capito bene... cioè il seguente esempio crea un array unicamente con 'arancia'
    Codice PHP:
    $source = array (
           
    'mela',
           
    'Pera',
           
    'banaNa',
           
    'alBicocca',
           
    'uVa',
           
    'pompeLmo' // sta solo qui
    );

    $match = array (
           
    'MeLa',
           
    'peRa',
           
    'bAnana',
           
    'albicocca',
           
    'uva',
           
    'arancia' // sta solo qui
    );
    echo 
    '<pre>';
    print_r(array_diff(array_map('strtolower',$match), array_map('strtolower',$source))); 
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  10. #10
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Originariamente inviato da oly1982
    sempre se ho capito bene... cioè il seguente esempio crea un array unicamente con 'arancia'
    Restituirebbe anche quelli che sono solo nel primo array. Come già scritto, il codice postato funziona. Non so quale sarebbe il problema.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.