Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65

    Array ed elementi diversi

    Salve a tutti


    Ho 2 array dinamici che caricano dei valori da due tabelle di db.
    Mettiamo che gli array abbiano i seguenti valori:

    Array1(0)= 1
    Array1(1)= 2

    Array2(0)= 2
    Array2(1)= 3
    Array2(2)= 1

    Dovrei confrontare i 2 Array ed estrapolare il valore non presente in uno dei due array che in questo caso è il "3" dell'Array2.
    Per capire meglio (spero) vi riporto un esempio di insiemistica nel quale il valore in verde è quello che mi interessa estrarre.

    grazie

  2. #2
    di pronto non c'è niente (purtroppo). devi fare due cicli nidificati e cercare nell'uno quello che non c'è nell'altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65
    In effetti ho già fatto la nidificazione.
    Questo è il codice:

    For i=0 to uBound(IDiscrittiLocArray1)
    For k = 0 To uBound(IDiscrittiArray2)
    if trim(datnascArray2(k)) = trim(datnascLocArray1(i)) then
    'eseguo le mie operazioni
    end if
    Next
    Next

    Il fatto è che qui estraggo i valori uguali.
    Come faccio a trovare il valore che non è presente in uno dei due array?
    (Se fosse una query farei: QUERY1 WHERE NOT IN SOTTO QUERY, e il gioco sarebbe fatto, ma a me servirebbe farlo con gli array)

  4. #4
    devi usare una variabile booleana che metterai a True se trovi una uguaglianza. se all'uscita del ciclo interno la variabile è ancora False, vuol dire che l'elemento è diverso

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65
    Grazie per la dritta.

    Se può servire qui c'è il codice

    <%
    Bolean = False
    For i=0 to uBound(IDiscrittiLocArr)
    For k = 0 To uBound(IDiscrittiArr)
    if trim(datnascArr(k)) = trim(datnascLocArr(i)) and Lcase(trim(CognomeArr(k))) = Lcase(trim(CognomeLocArr(i))) and Lcase(trim(nomeArr(k))) = Lcase(trim(nomeLocArr(i))) then
    Bolean = True
    end if
    Next
    If Bolean = False then
    if NumInsWebArr = "" then NumInsWebArr = 0 else NumInsWebArr = NumInsWebArr + 1
    %><input type="hidden" name="IDiscrittiInsWebVar" value="<%=trim(IDiscrittiLocArr(i))%>"><%
    end if
    Next
    %><input type="hidden" name="NumInsWebArr" value="<%=NumInsWebArr%>">

  6. #6
    per rendere il giro più veloce, metterei un EXIT FOR appena trovata una corrispondenza (basta la prima, no? )


  7. #7
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65
    In verità devo trovare tutte le corrispondenze di bolean false.
    Forse per renderlo più veloce dovrei usare gli array multidimensionali per inserire nelle varie posizioni degli array i valori di data, nome, cogmome ecc, come se fosse un record.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65
    Correggo lo script. la boleana era da inserire tra i due loop

    For i=0 to uBound(IDiscrittiLocArr)
    Bolean = False
    For k = 0 To uBound(IDiscrittiArr)

  9. #9
    infatti ho detto EXIT FOR nel ciclo interno...

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65

    Infatti hai ragione ...

    if trim(datnascArr(k)) = trim(datnascLocArr(i)) then
    Bolean = True
    EXIT FOR
    end if



    Ne approfitto per chiedere una cosa a proposito dell'array multipo della mia reply precedente.

    In una pagina1.asp imposto un array multipo

    For i=0 to Rs.recordcount-1
    <input type="hidden" name="Arr" value="<%=trim(Rs("IDiscritti"))%>,<%=trim(Rs("num eroIscr"))%>">
    next

    In pagina2.asp se Arr fosse un array mono dimensione userei

    if Var <> "" then Arr= Split(trim(Var),",") end if

    Ma nel caso del multi dimensione come faccio a splittare?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.