Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412

    Non mi trovo col conteggio dell'UBound

    Ragazzi, c'è una cosa che non riesco a spiegarmi con la funzione UBound.. Io scrivo

    Codice PHP:
    <% 

    Dim food(2,3)
    food(0,0)="Apple"
    food(0,1)="Banana"
    food(0,2)="Orange"
    food(0,3)="Lemon"
    food(1,0)="Pizza"
    food(1,1)="Hamburger"
    food(1,2)="Spaghetti"
    food(1,3)="Meatloaf"
    food(2,0)="Cake"
    food(2,1)="Cookie"
    food(2,2)="Icecream"
    food(2,3)="Chocolate"


    Response.Write(UBound(food,1) & "
    "
    )
    Response.Write(UBound(food,2) & "
    "
    )

    %> 
    e mi ritrovo col risultato


    2
    3


    Ebbene, non capisco la logica dietro tale conteggio..
    Consideriamo che abbiamo 3 dimensioni in totale, ciascuna dei quale contiene 4 settori

    la dimensione 1 (UBound(food,1)) dovrebbe restituirmi 3 (4 settori, considerando lo zero l'indice è 3)
    idem per la dimensione 2

    ed invece sta sta differenza.. come mai?


    Allego immagine rappresentativa dell'array
    Immagini allegate Immagini allegate

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma vado a memoria (potrei sbagliare) ma mi sembra corretto il risultato restituito UBound legge il limite massimo della Array
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    Originariamente inviato da cavicchiandrea
    Ma vado a memoria (potrei sbagliare) ma mi sembra corretto il risultato restituito UBound legge il limite massimo della Array
    il punto è perchè food, 1 restituisce 2 mentre food,3 restituisce 3?

    Da quel che ho capito ubound altro non fa che dirmi quante righe e colonne ci sono. Quando ho dichiarato l'array ho messo food (2,3) quindi 2 righe e 3 colonne..

    Ma quello che a me serve sapere è quanti elementi si trovano ad esempio nella prima riga

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da American
    il punto è perchè food, 1 restituisce 2 mentre food,3 restituisce 3?
    Ma lo dici tu food(2,3)
    Da quel che ho capito ubound altro non fa che dirmi quante righe e colonne ci sono. Quando ho dichiarato l'array ho messo food (2,3) quindi 2 righe e 3 colonne..

    Ma quello che a me serve sapere è quanti elementi si trovano ad esempio nella prima riga
    Continuo a non capire con le caratteristi che appena descritte avrai sempre 4 elementi (lo 0 e intrinseco nelle array) cioè lo 0 + 3
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    Il fatto è che io sono abituato con altri linguaggi di programmazione che sono decisamente più flessibili

    In altri linguaggi è ad esempio possibile fare in modo che una una riga dell'array abbia un tot di "colonne", e un'altra riga un diverso numero


    Da quel che ho capito in ASP gli array hanno una dimensione fissa, per cui se dichiaro scrivendo
    food(2,3) vuol dire che avrò un array multidimensionale di 2x3, conteggiando anche lo zero, 3x4


    Quello che io non riesco a capire è:
    se voglio conteggiare la lunghezza della riga 0, quella contenete
    Apple Banana Orange Lemon

    che devo scrivere? Ammesso che ci sia un metodo..

  6. #6
    Originariamente inviato da American
    Il fatto è che io sono abituato con altri linguaggi di programmazione che sono decisamente più flessibili

    In altri linguaggi è ad esempio possibile fare in modo che una una riga dell'array abbia un tot di "colonne", e un'altra riga un diverso numero


    Da quel che ho capito in ASP gli array hanno una dimensione fissa, per cui se dichiaro scrivendo
    food(2,3) vuol dire che avrò un array multidimensionale di 2x3, conteggiando anche lo zero, 3x4


    Quello che io non riesco a capire è:
    se voglio conteggiare la lunghezza della riga 0, quella contenete
    Apple Banana Orange Lemon

    che devo scrivere? Ammesso che ci sia un metodo..
    non capisco cosa non sia chiaro: hai dichiarato un array BIDIMENSIONALE di 2 righe x 3 colonne (3x4) se conti la posizone zero. Meglio di 2 posizioni nella prima dimensione e 3 posizioni nella seconda dimensione (sempre 3 e 4 rispettivamente se conteggi anche lo zero). quindi ubound(array,1) ti dà il numero di elementi della prima dimensione, ubound(array,2) il numero di elementi della seconda dimensione e così via.

    per cui i risultati sono corretti. non capisco cosa ti aspetti e cosa significhi tutta la spatafiata sugli "altri linguaggi di programmazione che sono decisamente più flessibili"

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    Originariamente inviato da optime
    non capisco cosa non sia chiaro: hai dichiarato un array BIDIMENSIONALE di 2 righe x 3 colonne (3x4) se conti la posizone zero. Meglio di 2 posizioni nella prima dimensione e 3 posizioni nella seconda dimensione (sempre 3 e 4 rispettivamente se conteggi anche lo zero). quindi ubound(array,1) ti dà il numero di elementi della prima dimensione, ubound(array,2) il numero di elementi della seconda dimensione e così via.
    è qui che non capisco...Nel momento in cui io dichiaro un array ho il numero di righe e colonne.. Quindi i valori son due.. Che senso avrebbe mettere ad esempio ubound(array,3) o ubound(array,4) ?


    non capisco cosa ti aspetti e cosa significhi tutta la spatafiata sugli "altri linguaggi di programmazione che sono decisamente più flessibili"
    da quanto ho visto in AS3 e PHP, gli array non hanno bisogno di essere dichiarati con dimensioni fisse, ma tramite il metodo PUSH è possibile aggiungere in coda i valori. Questo permette inoltre di creare array multidimensionali che non debbano avere necessariamente tot colonne per riga, ma ogni riga può avere un numero variabile di colonne.

    Capito che intendo?

  8. #8
    Originariamente inviato da American
    è qui che non capisco...Nel momento in cui io dichiaro un array ho il numero di righe e colonne.. Quindi i valori son due.. Che senso avrebbe mettere ad esempio ubound(array,3) o ubound(array,4) ?
    è OVVIO che nel tuo caso non ha senso, era solo un esempio!

    Originariamente inviato da American
    da quanto ho visto in AS3 e PHP, gli array non hanno bisogno di essere dichiarati con dimensioni fisse, ma tramite il metodo PUSH è possibile aggiungere in coda i valori. Capito che intendo?
    basta usare la REDIM o la REDIM PRESERVE. Non occorre svillaneggiare un linguaggio quando non si conoscono le istruzioni: basta chiedere.


    Originariamente inviato da American
    Questo permette inoltre di creare array multidimensionali che non debbano avere necessariamente tot colonne per riga, ma ogni riga può avere un numero variabile di colonne.
    tot colonne per riga non fanno un array MULTI-dimensionale, è sempre un array BI-dimensionale (semanticamente hai ragione, la distinzione è tra MONO e MULTI, ma di solito MULTI indica più di due dimensioni).


    e buon lavoro

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    Originariamente inviato da optime
    è OVVIO che nel tuo caso non ha senso, era solo un esempio!
    Quello che intendo è che la dichiarazione di un array bidimensionale avviene tramite il passaggio di due parametri numerici: righe,colonne

    Non mi pare che sia possibile metterne un terzo o un quarto (anche perchè c'ho provato e giustamente lo script va in errore)..
    Detto questo
    UBound(array,1) mi restituisce il numero di RIGHE
    UBound(array,2) il numero di COLONNE

    Quindi in quali casi è ammesso utilizzare ubound(array,3), ubound(array,4) etc etc???

  10. #10
    scusa, ma a cosa ti serve conoscere l'ubound della TERZA o QUARTA dimensione se hai dichiarato un array a DUE dimensioni? Ripeto, il mio era solo un esempio: se deve creare confusione, dimentica quello che ti ho detto ("... e così via").


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