Un tableau est une collection de données ordonnées. Les éléments du tableau ne peuvent pas appartenir au même type de données. Utilisez un nom de tableau et un indice unifiés pour identifier de manière unique les éléments du tableau. La modification d'un élément n'affectera pas les autres éléments. Les indices des tableaux sont délimités et divisés en limites inférieures et limites supérieures. Les tableaux peuvent être déclarés en utilisant Dim, Private, Public ou Static, et leurs formats de syntaxe sont les mêmes. Ce qui suit présente uniquement la méthode d'utilisation de Dim pour déclarer un tableau.
1. Définition et déclaration du tableau
La syntaxe de définition d'un tableau est la suivante :
Nom du tableau Dim ([[limite inférieure de l'indice à] limite supérieure de l'indice]) [Comme type de données]
Par exemple (en supposant que la limite inférieure par défaut des tableaux du module actuel est 0) :
① Dim A(10) sous forme d'entier
Indique que le nom du tableau est A. La limite inférieure de l'indice de ce tableau est la valeur par défaut 0 et la limite supérieure de l'indice est 10. Il y a 11 éléments de type Integer, de A(0), A(1 ) à A(10).
② Dim B (1 à 20) sous forme d'entier
Indique que le nom du tableau est B. La limite inférieure de l'indice de ce tableau est 1, la limite supérieure de l'indice est 20 et il y a 20 éléments de type Integer, de B(1) à B(20).
③Dim DayArray(50)
Indique que DayArray est un tableau Variant avec 51 éléments indexés (de 0 à 50).
④Dim Matrix (3, 4) en tant qu'entier
Indique que Matrix est un tableau d'entiers bidimensionnel.
⑤Dim MyMatrix (1 à 5, 4 à 9, 3 à 5) en double
Indique que MyMatrix est un double tableau tridimensionnel avec des limites supérieure et inférieure explicitement spécifiées.
⑥Dim anniversaire (1 à 10) comme date
Indique que BirthdayDay est un tableau de type Date avec des index de 1 à 10.
2. Instruction de base d'option
L'instruction Option Base est utilisée au niveau du module pour déclarer une limite inférieure par défaut pour les indices du tableau.
La syntaxe de l'instruction Option Base est la suivante :
Base d'options {0 | 1}
Remarque : Par défaut, la limite inférieure du tableau est 0 et il n'est pas nécessaire d'utiliser l'instruction Option Base pour le moment. Si vous utilisez cette instruction pour spécifier une limite inférieure de tableau de 1, vous devez utiliser l'instruction Option Base avant la déclaration de tableau du module.
Avis:
(1) La clause To dans les instructions Dim, Private, Public, ReDim et Static offre un moyen plus flexible de contrôler l'indice du tableau. Toutefois, si vous ne spécifiez pas explicitement de limite inférieure à l'aide de la clause To, vous pouvez utiliser Option Base pour définir la limite inférieure par défaut sur 1. La limite inférieure d'un tableau créé à l'aide de la fonction Array est également déterminée par la limite inférieure spécifiée par l'instruction Option Base, sauf si le tableau est qualifié par un nom de bibliothèque de types (tel que VBA.Array). nom de la bibliothèque, alors la limite inférieure du tableau créé à l'aide de la fonction Array est La limite inférieure n'est pas affectée par Option Base.
(1) L'instruction Option Base n'affecte que la limite inférieure du tableau situé dans le module contenant l'instruction.
Quelques notes sur les déclarations de tableaux :
①Les règles de dénomination des noms de tableaux sont les mêmes que celles des noms de variables.
② Le nom du tableau est mis entre parenthèses, les crochets ne peuvent pas être utilisés, contrairement au langage C.
③La limite inférieure de l'indice ne doit pas être supérieure à sa limite supérieure.
④ Vous pouvez utiliser des noms de variables ou des noms de constantes (ainsi que des nombres réels) comme limites d'indice. Lorsque la limite de l'indice est un nom de constante, la taille du tableau est fixe. Lorsque la limite de l'indice est un nom de variable, la taille du tableau peut être définie dynamiquement, c'est-à-dire que la taille du tableau dépend. la valeur de la variable lors de l'exécution du programme. Par conséquent, les tableaux en VB peuvent être divisés en deux types de tableaux : les tableaux statiques et les tableaux dynamiques.
3. tableau statique
Un tableau statique signifie que le nombre d’éléments du tableau est fixe, c’est-à-dire que la taille de l’espace mémoire qu’ils occupent est fixe. Selon les différentes dimensions des tableaux de taille fixe, ils peuvent être divisés en tableaux unidimensionnels et tableaux multidimensionnels.
Le format syntaxique pour déclarer un tableau multidimensionnel est :
Nom du tableau Dim ([liste de limites d'indice]) [Comme type de données]
La forme de définition de la limite de l'indice : [limite inférieure de l'indice à] limite supérieure de l'indice
La liste des limites d'indice fait référence aux limites d'indice de chaque dimension du tableau séparées par des virgules, c'est-à-dire
[Indice limite inférieure À] Limite supérieure de l'indice, [Indice limite inférieure À] Limite supérieure de l'indice, ..., [Indice limite inférieure À] Limite supérieure de l'indice
(première dimension) (deuxième dimension) (énième dimension)
Lorsque n = 1, le tableau est appelé tableau à une dimension ; lorsque n = 2, le tableau est appelé tableau à deux dimensions et ainsi de suite, lorsque n = m, le tableau est appelé tableau à m dimensions ;
Les exemples suivants présentent l'utilisation de tableaux unidimensionnels.
'Déclarez un tableau de chaînes FriendsName d'une longueur de 51
Dim FriendsName (50) sous forme de chaîne
'Déclare un tableau d'entiers global Classe de longueur 11
Classe publique (10) sous forme d'entier
Le nombre d'éléments dans un tableau unidimensionnel est (limite supérieure - limite inférieure + 1).
Vous pouvez utiliser une instruction de boucle pour attribuer une valeur initiale à un tableau, telle que :
Dim I comme entier
Pour I = 0 à 11 'Utiliser le contrôle de flux du programme pour les instructions de boucle
C(Je) = Je
Ensuite, je
Si une limite inférieure n'est pas spécifiée explicitement, la limite inférieure du tableau est contrôlée par l'instruction Option Base. S'il n'y a pas d'instruction Option Base, la limite inférieure est par défaut 0.
La dimension du tableau n'est pas limitée à 2. En VB, elle peut être étendue jusqu'à 60. Dans les applications pratiques, il n'y a pas beaucoup d'applications pour les tableaux de plus de trois dimensions. Lors de la définition d'un tableau multidimensionnel, vous n'avez besoin que d'une seule instruction Dim pour spécifier toutes les limites d'indice du tableau. L'utilisation de tableaux multidimensionnels peut facilement représenter des données statistiques significatives. Par exemple:
Dim Profit (16,10,12) en tant que devise
Ce tableau Profit peut être utilisé pour représenter le bénéfice d'un certain grand magasin avec le nom du magasin, le département et le mois comme paramètres. Par exemple : Profit(2,8,11) représente le bénéfice du huitième département de la deuxième branche en novembre.
4. tableau dynamique
Parfois, il n'est pas possible de connaître la taille nécessaire d'une baie pour répondre aux besoins réels avant de commencer à l'utiliser. Bien sûr, la taille du tableau peut être définie pour être suffisamment grande pour répondre à tous les besoins pratiques de l'application, mais cette méthode est très inefficace (un grand gaspillage d'espace mémoire). Si vous utilisez un tableau dynamique, vous pouvez définir avec précision la taille du tableau en fonction des besoins réels pendant l'exécution du programme.
Lors de la déclaration d'un tableau, ne pas donner de liste de dimensions déclare le tableau comme un tableau dynamique. Par exemple:
Dim MyArry() comme entier
Avant d'utiliser un tableau dynamique, vous devez utiliser l'instruction ReDim pour le redéfinir. Par exemple, le tableau MyArry déclaré précédemment peut être défini comme un tableau dynamique à deux dimensions à l'aide de l'instruction suivante.
ReDim MonArry(10,10)
Vous pouvez également définir des tableaux dynamiques plusieurs fois en exécutant plusieurs fois l'instruction ReDim. Le nombre maximum de dimensions pouvant être définies à l'aide de ReDim est de 60. L'instruction ReDim peut modifier le nombre d'éléments dans chaque dimension du tableau, mais pas le nombre de dimensions. Ce qui suit est un exemple d'application standard de l'instruction ReDim.
Dim MyArry() As Single 'Déclarez un tableau dynamique
ReDim MyArry(30,20,10) 'Redéfinir le tableau
ReDim MyArry(50,23,21) 'Redéfinir à nouveau le tableau
La syntaxe de ReDim est la même que celle de Dim. De plus, il possède également l'option Préserver le mot-clé :
Nom du tableau ReDim Preserve ([ [limite inférieure à] limite supérieure]) [Comme type de données]
Par exemple:
ReDim MonArry(50,23,21)
ReDim Préserver MyArry(50,23,50)
Remarque : lors de l'utilisation de ReDim, la redéfinition du tableau entraînera la disparition des valeurs de tous les éléments du tableau, tandis que l'utilisation de Preserve peut conserver les données. Mais l'utilisation de Preserve ne permet de conserver les données du tableau que lors de la modification de la taille de la dernière dimension du tableau. Pour les tableaux unidimensionnels, toutes les données seront conservées, mais pour les tableaux multidimensionnels : seule la taille de la dernière dimension peut être modifiée pour conserver toutes les données du tableau, sinon une erreur se produira.
5. Fonction LBound et fonction UBound
La fonction LBound et la fonction Ubound renvoient toutes deux des données de type Long. La valeur obtenue par la première est l'indice minimum disponible pour la dimension de tableau spécifiée, tandis que la valeur obtenue par la seconde est l'indice maximum. Leur syntaxe est :
LBound(nom du tableau[, dimension spécifiée])
UBound (nom du tableau [, dimension spécifiée])
Le nom du tableau est obligatoire. Le nombre spécifié de dimensions est facultatif et spécifie pour quelle dimension renvoyer la limite inférieure. 1 représente la première dimension, 2 représente la deuxième dimension, et ainsi de suite. Si la dimension spécifiée est omise, sa valeur par défaut est 1.
Pour savoir comment utiliser la fonction LBound et la fonction UBound, consultez l'exemple suivant :
Dim A(1 à 100,3,-3 à 4) As Integer 'Définit un tableau tridimensionnel, en supposant que le langage Option Base n'est pas utilisé
' L'instruction modifie la valeur par défaut de la limite inférieure du tableau.
Utilisez les fonctions Lbound et Ubound sur le tableau A. La liste des valeurs de retour est la suivante
Les limites inférieures par défaut pour toutes les dimensions dépendent du paramètre de l'instruction Option Base. On peut voir que l'utilisation des fonctions LBound et UBound sur un tableau peut être utilisée pour déterminer le nombre d'éléments dans un tableau.
Pour les tableaux dont les dimensions sont spécifiées à l'aide d'une clause To dans leur déclaration, ils peuvent utiliser n'importe quel entier comme limite inférieure sans être limité par l'instruction Option Base.
6. Fonctionnalités avancées des tableaux
Bien que les tableaux soient le plus souvent utilisés pour stocker des groupes de variables, les tableaux sont utiles à d’autres égards. Vous pouvez attribuer le contenu d'un tableau à un autre, créer des fonctions qui renvoient des tableaux et créer des propriétés qui renvoient des tableaux. Dans de nombreux cas, ces techniques peuvent améliorer les performances des applications.
Tout comme vous pouvez affecter la valeur d'une variable à une autre variable, comme StrA = StrB, vous pouvez également affecter le contenu d'un tableau à un autre tableau. Par exemple, vous souhaitez copier un tableau d'octets d'un emplacement à un autre. Ceci peut être réalisé en copiant un octet à la fois. La procédure est la suivante :
Sub ByteCopy (oldCopy() en octet, newCopy() en octet)
'Le paramètre oldCopy() est le tableau source, newCopy() est le tableau cible
Dim i comme entier
ReDim newCopy (Lbound(oldCopy) To UBound(oldCopy)) 'Redéfinir le tableau dynamique
Pour i = Lbound(oldCopy) To Ubound(oldCopy) 'Affectation de boucle
nouvelleCopie(i) = ancienneCopie(i)
Suivant
Fin du sous-marin
Un moyen plus simple et plus efficace consiste à affecter directement un tableau à un autre tableau :
Sub ByteCopy (oldCopy() en octet, newCopy() en octet)
'Le paramètre oldCopy() est le tableau source, newCopy() est le tableau cible
newCopy = oldCopy 'Utilisez le tableau pour attribuer des valeurs directement
Fin du sous-marin
Il y a quelques règles à garder à l'esprit concernant l'affectation des variables. Par exemple, bien qu'une variable déclarée comme un entier puisse être affectée à une variable déclarée comme un long sans aucun problème, l'attribution d'un long à une variable entière peut facilement conduire à une erreur de débordement. En plus de respecter les règles concernant les affectations entre les variables de type de données, les affectations de tableaux doivent également respecter d'autres règles, notamment le nombre de dimensions du tableau, la taille de chaque dimension et si le tableau est fixe ou dynamique.
① Plusieurs facteurs à prendre en compte lors de l'attribution de tableaux avec différentes dimensions et types de données
l Le type de tableau sur le côté gauche de l'opérateur d'affectation : tableau fixe (Dim x(1 to 10) As Integer) ou tableau dynamique (Dim x() As Integer).
l Si la dimension du tableau sur le côté gauche de l'opérateur d'affectation correspond à la dimension du tableau sur le côté droit de l'opérateur d'affectation.
l Si le nombre d'éléments du tableau dans chaque dimension des tableaux des deux côtés de l'opérateur d'affectation correspond. Les dimensions peuvent correspondre même si la déclaration des tableaux est différente. Par exemple, si les éléments de chaque dimension d'un tableau sont numérotés à partir de 0 et que les éléments d'un autre tableau sont numérotés à partir de 1, les dimensions peuvent également correspondre.
l Les types de données de tous les éléments des deux côtés de l'opérateur d'affectation doivent être compatibles. Ces règles sont cohérentes avec les règles d'affectation des variables.
Le tableau 3-6 montre l'impact de ces facteurs :
Des erreurs dans l'affectation du tableau peuvent se produire au moment de la compilation ou au moment de l'exécution (par exemple, si le type de données ne peut pas être converti ou si l'affectation tente de re-déclarer (ReDim) un tableau statique). Concevez votre programme pour ajouter une gestion des erreurs afin de garantir que les tableaux correspondent avant l'affectation.
②Écrivez une fonction qui renvoie un tableau
Il est possible de renvoyer un ensemble de valeurs à partir d'une fonction. Par exemple, renvoyer un ensemble d'octets à partir d'une fonction sans avoir à le convertir en chaîne et vice-versa.
Voici un exemple simple utilisant une fonction qui renvoie un tableau d'octets :
Sous-formulaire privé_Load()
Dim b comme octet
Dim i comme entier
Dim ReturnArray() en octet
b = Coctet(54)
ReturnArray() = ArrayFunction(b) 'Appeler la fonction
Pour i = Lbound (ReturnArray) Vers Ubound (ReturnArray)
Msgbox ReturnArray(i) 'Parcourez la boîte de message contextuelle pour afficher la valeur du tableau
Suivant
Fin du sous-marin
Fonction publique ArrayFunction(b As Byte) As Byte()
Dim x(2) en tant qu'octet
x(0) = b
x(1) = b + CByte(200)
x(2) = b + b
ArrayFunction = x 'renvoie le résultat sous forme de tableau x
Fonction de fin
Après avoir exécuté l'exemple ci-dessus, ReturnArray() est un tableau à trois éléments contenant les valeurs attribuées au tableau dans ArrayFunction. L'instruction ArrayFunction transmet un tableau en tant que paramètre ; le type de données du tableau doit être le même que le type de données de la fonction (octets dans ce cas). Puisqu'il s'agit d'un appel de fonction, les parenthèses ne sont pas nécessaires lors du passage du tableau.
Avis:
1. Bien qu'il soit possible de renvoyer un tableau en l'attribuant à un autre tableau (ArrayFunction = x()), cette approche n'est pas recommandée pour des raisons de performances.
2. Un type doit être spécifié pour la fonction qui renvoie un tableau. Ce type peut être Variant. De cette façon, Function X() As Variant() est valide et Function X() As() échouera.
3. Lors de l'appel d'une fonction qui renvoie un tableau, la variable utilisée pour stocker la valeur de retour doit également être un tableau et son type de données doit être le même que le type de retour de la fonction, sinon une erreur d'incompatibilité de type sera affichée.
Définir un tableau simple
Il existe deux manières de définir et d'initialiser des tableaux en asp, voyons un exemple de chacune :
Première méthode :
MyArray = Tableau (janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre)
La taille du tableau est déterminée par le nombre d'éléments initialisés.
Deuxième méthode :
Dim myArray(2) 'Spécifiez la taille du tableau
monTableau(0)=janvier
myArray(1)=Février
Expansion dynamique du tableau
DIM monArray()
REDIM myArray(20) 'Redéfinir la taille du tableau à 20
ReDim Preserve MyArray(i) 'Preserve conserve les données d'origine dans le tableau
tableau bidimensionnel
Exemple:
dim MyArray(5,10) 'définit un tableau à deux dimensions
Exemple d'affectation bidimensionnelle :
MONTableau(3,3)=100
Il existe également une méthode d'implémentation déguisée pour les tableaux bidimensionnels :
dimMonTableau(5)
MyArray(0)=Array(...) 'Tableau unidimensionnel
MyArray(1)=Array(...)'Tableau unidimensionnel
...
Lors de l'accès, utilisez le format MyArray(x)(y)
indice de tableau
Utilisez la méthode ci-dessus pour définir un tableau. L'indice du premier élément de chaque tableau de dimensions est 0 et l'indice du dernier élément est le nombre d'éléments -1.
Mais vous pouvez également spécifier l'indice du tableau, tel que :
dim MyArray1(3 to 10) 'L'indice est de 3 à 10, MyArray(3) récupère la valeur du premier élément
Fonctions de tableau utiles
Fonction Ubound (nom du tableau) : renvoie l'indice du dernier élément du tableau.
Fonction Lbound (nom du tableau) : renvoie l'indice du premier élément du tableau, la valeur par défaut est 0.
Plus d'applications :
Fonction de tri de tableau
fonction Trier(aire)
KeepChecking = VRAI
Faire jusqu'à ce que KeepChecking = FALSE
KeepChecking = FAUX
Pour I = 0 à UBound(ary)
Si I = UBound(ary) alors quittez pour
Si ary(I) > ary(I+1) Alors
PremièreValeur = ary(I)
SecondeValeur = ary(I+1)
ary(I) = SecondeValeur
ary(I+1) = PremièreValeur
KeepChecking = VRAI
Fin si
Suivant
Boucle
Trier = ary
Fin de fonction
Exemple d'application de la fonction de tri de tableaux
DimMonTableau
MonTableau = Tableau(1,5,123,12,98)
MonTableau = Trier(MonTableau)
Pour I = Lbound (MyArray) à Ubound (MyArray)
Réponse.Écrire MyArray(I) & <br>
Suivant
Diviser une chaîne et renvoyer un tableau
DimMonTableau
MyArray = Split (chaîne, séparateur)
Pour I = Lbound (MyArray) à Ubound (MyArray)
Réponse.Écrire MyArray(I) & <br>
Suivant
Utilisation de tableaux dans l'application et la session
Application.Lock
Application (StoredArray) = MonTableau
Application.Déverrouiller
LocalArray = Application (StoredArray)
Écraser le tableau dans l'application
Application.Lock
Application (StoredArray) = LocalArray
Application.Déverrouiller
L'utilisation de la session est la même que celle de l'application
Importer des données de la base de données dans un tableau
DimMonTableau
Obtenez tous les enregistrements
MonTableau = RS.GetRows
Obtenez les 10 premiers enregistrements
MonTableau = RS.GetRows(10)
Pour la ligne = 0 Vers UBound (MyArray, 2)
Pour col = 0 Vers UBound (MyArray, 1)
Response.Write (colonne, ligne) & <br>
Suivant
Suivant
Passer le tableau à une autre page
Il existe de nombreuses façons de transmettre un tableau à une autre page, comme les trois suivantes :
1. Définissez une chaîne séparée par des virgules, puis utilisez la fonction Split pour recréer le tableau sur la page suivante.
2. Stockez le tableau dans une variable de session, puis appelez-le sur la page suivante.
3. Passez le tableau dans la zone cachée du formulaire. Ils sont automatiquement séparés par des virgules, puis utilisez la fonction Split pour recréer le tableau.
Les deux premières méthodes sont bonnes, mais toutes deux sont plus compliquées que la troisième. Nous ne présenterons ici que le troisième car c’est le plus simple.
Fichier 1.asp :
<%
je m'assombris
atténuer monArray(20)
pour I=0 à 20
monTableau(I)=Article & I
suivant
%>
<html>
<corps>
<form name=testform method=post action=2.asp>
<%
pour I=0 à ubound(myArray)
réponse.write <input type=hidden name=myArray value=' & myArray(I) & '>
suivant
%>
<p>
<type d'entrée=soumettre>
</form>
</corps>
</html>
Ce que nous avons fait ci-dessus, c'est utiliser un champ implicite distinct pour stocker chaque élément du tableau sous un formulaire. Regardons la page suivante :
Fichier 2.asp
<html>
<corps>
<%
dim arrString
atténuer monArray
je m'assombris
arrString=requête(monArray)
monTableau = split(arrString,,)
pour I=0 à ubound(myArray)
réponse.write Item &I& = & myArray(I) & <br> & vbCrLf
suivant
%>
</corps>
</html>