Array adalah kumpulan data yang diurutkan. Elemen dalam array mungkin tidak termasuk dalam tipe data yang sama. Gunakan nama array dan subskrip terpadu untuk mengidentifikasi elemen dalam array secara unik. Mengubah satu elemen tidak akan memengaruhi elemen lainnya. Subskrip array dibatasi dan dibagi menjadi batas bawah dan batas atas. Array dapat dideklarasikan menggunakan Dim, Private, Public atau Static, dan format sintaksisnya sama. Berikut ini hanya memperkenalkan metode penggunaan Dim untuk mendeklarasikan array.
1. Definisi dan deklarasi array
Sintaks definisi array adalah sebagai berikut:
Nama array redup ([[batas bawah subskrip Ke] batas atas subskrip]) [Sebagai tipe data]
Misalnya (dengan asumsi batas bawah default untuk array dalam modul saat ini adalah 0)):
① Redupkan A(10) Sebagai Integer
Menunjukkan bahwa nama array adalah A. Batas bawah subskrip array ini adalah nilai default 0, dan batas atas subskrip adalah 10. Terdapat 11 elemen bertipe Integer, dari A(0), A(1 ) sampai SEBUAH(10).
② Redupkan B(1 Sampai 20) Sebagai Integer
Menunjukkan bahwa nama array adalah B. Batas bawah subskrip array ini adalah 1, batas atas subskrip adalah 20, dan terdapat 20 elemen bertipe Integer, dari B(1) hingga B(20).
③Redupkan Array Hari(50)
Menunjukkan bahwa DayArray adalah array Varian dengan 51 elemen yang diindeks (dari 0 hingga 50).
④Dim Matriks(3, 4) Sebagai Integer
Menunjukkan bahwa Matriks merupakan array Integer dua dimensi.
⑤Dim MyMatrix(1 Sampai 5, 4 Sampai 9, 3 Sampai 5) Sebagai Ganda
Menunjukkan bahwa MyMatrix adalah array ganda tiga dimensi dengan batas atas dan bawah yang ditentukan secara eksplisit.
⑥Redupkan Ulang Tahun (1 Sampai 10) Sebagai Tanggal
Menunjukkan bahwa BirthdayDay adalah array tipe Tanggal dengan indeks dari 1 hingga 10.
2. Pernyataan Basis Opsi
Pernyataan Option Base digunakan pada tingkat modul untuk mendeklarasikan batas bawah default untuk subskrip array.
Sintaks pernyataan Option Base adalah sebagai berikut:
Basis Opsi {0 |.1}
Catatan: Secara default, batas bawah array adalah 0, dan pernyataan Basis Opsi tidak perlu digunakan saat ini. Jika Anda menggunakan pernyataan ini untuk menentukan batas bawah array 1, Anda harus menggunakan pernyataan Option Base sebelum deklarasi array modul.
Melihat:
(1) Klausa To dalam pernyataan Dim, Private, Public, ReDim, dan Static memberikan cara yang lebih fleksibel untuk mengontrol subskrip array. Namun, jika Anda tidak menentukan batas bawah secara eksplisit menggunakan klausa To, Anda dapat menggunakan Basis Opsi untuk mengatur batas bawah default ke 1. Batas bawah array yang dibuat menggunakan fungsi Array juga ditentukan oleh batas bawah yang ditentukan oleh pernyataan Option Base, kecuali Array memenuhi syarat berdasarkan nama pustaka tipe (seperti VBA.Array). nama perpustakaan, maka batas bawah array yang dibuat menggunakan fungsi Array adalah Batas bawah tidak terpengaruh oleh Basis Opsi.
(1) Pernyataan Option Base hanya mempengaruhi batas bawah array yang terletak di modul yang berisi pernyataan tersebut.
Beberapa catatan tentang deklarasi array:
①Aturan penamaan untuk nama array sama dengan aturan untuk nama variabel.
② Nama array diapit tanda kurung, tanda kurung siku tidak dapat digunakan, tidak seperti bahasa C.
③Batas bawah subskrip tidak boleh lebih besar dari batas atasnya.
④ Anda dapat menggunakan nama variabel atau nama konstanta (serta bilangan real) sebagai batas subskrip. Ketika batas subskrip adalah nama konstan, ukuran array tetap. Ketika batas subskrip adalah nama variabel, ukuran array dapat ditentukan secara dinamis, yaitu ukuran array bergantung pada nilai variabel selama menjalankan program. Oleh karena itu, array di VB dapat dibagi menjadi dua jenis array: array statis dan array dinamis.
3. susunan statis
Array statis berarti jumlah elemen array tetap, yaitu ukuran ruang memori yang ditempati tetap. Menurut dimensi berbeda dari array berukuran tetap, array dapat dibagi menjadi array satu dimensi dan array multidimensi.
Format sintaks untuk mendeklarasikan array multidimensi adalah:
Nama array redup ([daftar batas subskrip]) [Sebagai tipe data]
Bentuk definisi batas subskrip: [batas bawah subskrip Ke] batas atas subskrip
Daftar batas subskrip mengacu pada batas subskrip dari setiap dimensi array yang dipisahkan dengan koma, yaitu
[Batas bawah subskrip Ke] Batas atas subskrip, [Batas bawah subskrip Ke] Batas atas subskrip, ..., [Batas bawah subskrip Ke] Batas atas subskrip
(dimensi pertama) (dimensi kedua) (dimensi ke-n)
Jika n=1, array disebut array satu dimensi; jika n=2, array disebut array dua dimensi; dan seterusnya, jika n=m, array disebut array m-dimensi.
Contoh berikut memperkenalkan penggunaan array satu dimensi.
'Deklarasikan array string FriendsName dengan panjang 51
Redupkan FriendsName(50) Sebagai String
'Deklarasikan kelas array bilangan bulat global dengan panjang 11
Kelas Publik(10) Sebagai Integer
Banyaknya elemen dalam array satu dimensi adalah (batas atas - batas bawah + 1).
Anda dapat menggunakan pernyataan loop untuk menetapkan nilai awal ke array, seperti:
Redupkan I Sebagai Integer
Untuk I = 0 Sampai 11 'Gunakan kontrol aliran program dari pernyataan loop
C(Saya) = Saya
Selanjutnya saya
Jika batas bawah tidak ditentukan secara eksplisit, batas bawah array dikontrol oleh pernyataan Option Base. Jika tidak ada pernyataan Basis Opsi, batas bawah defaultnya adalah 0.
Dimensi array tidak dibatasi hingga 2. Di VB dapat diperluas hingga 60. Dalam penerapan praktis, tidak banyak penerapan array dengan lebih dari tiga dimensi. Saat mendefinisikan array multidimensi, Anda hanya memerlukan satu pernyataan Dim untuk menentukan semua batas subskrip array. Menggunakan array multidimensi dapat dengan mudah mewakili beberapa data statistik yang bermakna. Misalnya:
Redupkan Keuntungan (16,10,12) Sebagai Mata Uang
Array Profit ini dapat digunakan untuk mewakili profit suatu department store tertentu dengan nama toko, departemen, dan bulan sebagai parameternya. Misalnya: Laba (2,8,11) mewakili laba departemen kedelapan dari cabang kedua pada bulan November.
4. susunan dinamis
Terkadang tidak mungkin untuk mengetahui seberapa besar sebuah array diperlukan untuk memenuhi kebutuhan sebenarnya sebelum array tersebut mulai digunakan. Tentu saja, ukuran array dapat didefinisikan cukup besar untuk memenuhi kebutuhan aplikasi praktis apa pun, namun metode ini sangat tidak efisien (membuang banyak ruang memori). Jika Anda menggunakan array dinamis, Anda dapat menentukan ukuran array secara akurat sesuai dengan kebutuhan sebenarnya saat program sedang berjalan.
Saat mendeklarasikan array, tidak memberikan daftar dimensi mendeklarasikan array sebagai array dinamis. Misalnya:
Redupkan MyArry() Sebagai Integer
Sebelum menggunakan array dinamis, Anda harus menggunakan pernyataan ReDim untuk mendefinisikannya kembali. Misalnya, array MyArry yang dideklarasikan sebelumnya dapat didefinisikan sebagai array dua dimensi dinamis menggunakan pernyataan berikut.
Redupkan Ulang MyArry(10,10)
Anda juga dapat mendefinisikan array dinamis beberapa kali dengan mengeksekusi pernyataan ReDim berulang kali. Jumlah maksimum dimensi yang dapat ditentukan menggunakan ReDim adalah 60. Pernyataan ReDim dapat mengubah jumlah elemen di setiap dimensi array, namun tidak dapat mengubah jumlah dimensi. Berikut ini adalah contoh penerapan standar pernyataan ReDim.
Redupkan MyArry() Sebagai Tunggal 'Deklarasikan array dinamis
ReDim MyArry(30,20,10) 'Definisikan ulang array
ReDim MyArry(50,23,21) 'Definisikan ulang array lagi
Sintaks ReDim sama dengan Dim. Selain itu, ia juga memiliki opsi Pertahankan kata kunci:
ReDim Pertahankan nama array ([ [batas bawah Ke] batas atas]) [Sebagai tipe data]
Misalnya:
Redupkan Ulang MyArry(50,23,21)
ReDim Pertahankan MyArry(50,23,50)
Catatan: Saat menggunakan ReDim, mendefinisikan ulang array akan menyebabkan nilai semua elemen array hilang, sedangkan menggunakan Preserve dapat mempertahankan data. Namun penggunaan Preserve hanya dapat menyimpan data array ketika ukuran dimensi terakhir array diubah. Untuk array satu dimensi, semua data akan dipertahankan, tetapi untuk array multidimensi: hanya ukuran dimensi terakhir yang dapat diubah untuk menyimpan semua data array, jika tidak maka akan terjadi kesalahan.
5. Fungsi LBound dan fungsi UBound
Baik fungsi LBound maupun fungsi Ubound mengembalikan data tipe Panjang. Nilai yang diperoleh dari fungsi pertama adalah subskrip minimum yang tersedia untuk dimensi larik yang ditentukan, sedangkan nilai yang diperoleh dari fungsi terakhir adalah subskrip maksimum. Sintaksnya adalah:
LBound(nama array[, dimensi tertentu])
UBound(nama array[, dimensi tertentu])
Nama array diperlukan. Jumlah dimensi yang ditentukan bersifat opsional dan menentukan dimensi mana yang batas bawahnya akan dikembalikan. 1 mewakili dimensi pertama, 2 mewakili dimensi kedua, dan seterusnya. Jika dimensi yang ditentukan dihilangkan, maka defaultnya adalah 1.
Untuk cara menggunakan fungsi LBound dan fungsi UBound lihat contoh berikut:
Redupkan A(1 hingga 100,3,-3 hingga 4) Sebagai Integer 'Definisikan array tiga dimensi, dengan asumsi bahwa bahasa Basis Opsi tidak digunakan
Pernyataan ' mengubah nilai default batas bawah array.
Gunakan fungsi Lbound dan Ubound pada array A. Daftar nilai yang dikembalikan adalah sebagai berikut
Batas bawah default untuk semua dimensi bergantung pada pengaturan pernyataan Basis Opsi. Terlihat bahwa penggunaan fungsi LBound dan fungsi UBound pada suatu array dapat digunakan untuk menentukan jumlah elemen dalam suatu array.
Untuk array yang dimensinya ditentukan menggunakan klausa To dalam deklarasinya, array dapat menggunakan bilangan bulat apa pun sebagai batas bawah tanpa dibatasi oleh pernyataan Basis Opsi.
6. Fitur lanjutan dari array
Meskipun array paling umum digunakan untuk menyimpan kelompok variabel, array berguna dalam hal lain. Anda bisa menugaskan konten satu larik ke larik lainnya, membuat fungsi yang mengembalikan larik, dan Anda bisa membuat properti yang mengembalikan larik. Dalam banyak kasus, teknik ini dapat meningkatkan kinerja aplikasi.
Sama seperti Anda dapat menetapkan nilai dari satu variabel ke variabel lain, seperti StrA = StrB, Anda juga dapat menetapkan konten dari satu array ke array lainnya. Misalnya, Anda ingin menyalin array byte dari satu lokasi ke lokasi lain. Hal ini dapat dicapai dengan menyalin satu byte pada satu waktu. Prosedurnya adalah sebagai berikut:
Sub ByteCopy(oldCopy() Sebagai Byte, newCopy() Sebagai Byte)
'Parameter oldCopy() adalah larik sumber, newCopy() adalah larik target
Redupkan saya Sebagai Integer
ReDim newCopy (Lbound(oldCopy) Ke UBound(oldCopy)) 'Definisikan ulang array dinamis
Untuk i = Lbound(oldCopy) Ke Ubound(oldCopy) 'Penugasan loop
Salinan baru(i) = Salinan lama(i)
Berikutnya
Akhiri Sub
Cara yang lebih sederhana dan efisien adalah dengan menugaskan satu array ke array lain secara langsung:
Sub ByteCopy(oldCopy() Sebagai Byte, newCopy() Sebagai Byte)
'Parameter oldCopy() adalah larik sumber, newCopy() adalah larik target
newCopy = oldCopy 'Gunakan array untuk menetapkan nilai secara langsung
Akhiri Sub
Ada beberapa aturan yang perlu diingat mengenai penugasan variabel. Misalnya, meskipun variabel yang dideklarasikan sebagai bilangan bulat dapat ditetapkan ke variabel yang dinyatakan sebagai panjang tanpa masalah, menetapkan panjang ke variabel bilangan bulat dapat dengan mudah menyebabkan kesalahan luapan. Selain mematuhi aturan mengenai penugasan antar variabel tipe data, penetapan array juga harus mematuhi aturan lain, termasuk jumlah dimensi array, ukuran setiap dimensi, dan apakah array bersifat tetap atau dinamis.
① Beberapa faktor yang perlu dipertimbangkan saat menetapkan array dengan dimensi dan tipe data berbeda
l Tipe array di sisi kiri operator penugasan: array tetap (Redupkan x(1 hingga 10) Sebagai Integer) atau array dinamis (Dim x() Sebagai Integer).
l Apakah dimensi array di sisi kiri operator penugasan cocok dengan dimensi array di sisi kanan operator penugasan.
l Apakah jumlah elemen array di setiap dimensi array di kedua sisi operator penugasan cocok. Dimensi mungkin cocok meskipun deklarasi arraynya berbeda. Misalnya, jika elemen setiap dimensi suatu larik diberi nomor mulai dari 0 dan elemen larik lainnya diberi nomor mulai dari 1, maka dimensinya mungkin juga cocok.
l Tipe data semua elemen di kedua sisi operator penugasan harus kompatibel. Aturan ini konsisten dengan aturan penugasan variabel.
Tabel 3-6 menunjukkan dampak dari faktor-faktor berikut:
Kesalahan dalam penetapan array dapat terjadi pada waktu kompilasi atau saat runtime (misalnya, jika tipe data tidak dapat digunakan atau penugasan mencoba mendeklarasikan ulang (ReDim) array statis). Rancang program Anda untuk menambahkan penanganan kesalahan guna memastikan bahwa array cocok sebelum ditugaskan.
②Tulis fungsi yang mengembalikan array
Dimungkinkan untuk mengembalikan sekumpulan nilai dari suatu fungsi. Misalnya, mengembalikan sekumpulan byte dari suatu fungsi tanpa harus mengubahnya menjadi string dan mengembalikannya lagi.
Berikut ini contoh sederhana menggunakan fungsi yang mengembalikan array byte:
Sub Formulir_Load() Pribadi
Redupkan b Sebagai Byte
Redupkan saya Sebagai Integer
Redupkan ReturnArray() Sebagai Byte
b = Cbita(54)
ReturnArray() = ArrayFunction(b) 'Fungsi panggilan
Untuk i = Lbound(ReturnArray) Ke Ubound(ReturnArray)
Msgbox ReturnArray(i) 'Ulangi kotak pesan pop-up untuk menampilkan nilai array
Berikutnya
Akhiri Sub
Fungsi Publik ArrayFunction(b Sebagai Byte) Sebagai Byte()
Redupkan x(2) Sebagai Byte
x(0) = b
x(1) = b + CBita(200)
x(2) = b+b
ArrayFunction = x 'mengembalikan hasilnya sebagai array x
Fungsi Akhir
Setelah menjalankan contoh di atas, ReturnArray() adalah array tiga elemen yang berisi nilai yang ditetapkan ke array di ArrayFunction. Pernyataan ArrayFunction meneruskan array sebagai parameter; tipe data array harus sama dengan tipe data fungsi (dalam hal ini byte). Karena ini adalah pemanggilan fungsi, tanda kurung tidak diperlukan saat meneruskan array.
Melihat:
1. Meskipun dimungkinkan untuk mengembalikan array dengan menugaskan ke array lain (ArrayFunction = x()), pendekatan ini tidak disarankan karena alasan kinerja.
2. Tipe harus ditentukan untuk fungsi yang mengembalikan array. Tipe ini bisa berupa Varian. Dengan cara ini, Fungsi X() As Variant() valid dan Fungsi X() As () akan gagal.
3. Saat memanggil fungsi yang mengembalikan array, variabel yang digunakan untuk menyimpan nilai kembalian juga harus berupa array, dan tipe datanya harus sama dengan tipe pengembalian fungsi, jika tidak, kesalahan ketidakcocokan tipe akan ditampilkan.
Definisikan array sederhana
Ada dua cara untuk mendefinisikan dan menginisialisasi array di asp, mari kita lihat contohnya masing-masing:
Metode satu:
MyArray = Array(Jan,Feb,Mar,Apr,Mei,Jun,Jul,Agt,Sep,Okt, Nov,Des)
Ukuran array ditentukan oleh jumlah elemen yang diinisialisasi.
Metode dua:
Redupkan myArray(2) 'Tentukan ukuran array
myArray(0)=Jan
myArray(1)=Februari
Ekspansi dinamis array
DIM array saya()
REDIM myArray(20) 'Definisikan ulang ukuran array menjadi 20
ReDim Preserve MyArray(i) 'Preserve menyimpan data asli dalam array
array dua dimensi
Contoh:
dim MyArray(5,10) 'mendefinisikan array dua dimensi
Contoh penugasan dua dimensi:
Array SAYA(3,3)=100
Ada juga metode implementasi terselubung untuk array dua dimensi:
redupkanArraySaya(5)
MyArray(0)=Array(...) 'Array satu dimensi
MyArray(1)=Array(...)'Array satu dimensi
...
Saat mengakses, gunakan format MyArray(x)(y)
indeks susunan
Gunakan metode di atas untuk mendefinisikan sebuah array. Subskrip elemen pertama setiap array dimensi adalah 0, dan subskrip elemen terakhir adalah jumlah elemen -1.
Namun Anda juga dapat menentukan subskrip array, seperti:
dim MyArray1(3 hingga 10) 'Subskripnya dari 3 hingga 10, MyArray(3) mendapatkan nilai elemen pertama
Fungsi array yang berguna
Fungsi Ubound(nama array)--mengembalikan subskrip elemen terakhir array.
Fungsi Lbound (nama array)--mengembalikan subskrip elemen pertama array, defaultnya adalah 0.
Lebih banyak aplikasi:
Fungsi pengurutan array
fungsi Sortir(ary)
KeepChecking = BENAR
Lakukan Hingga KeepChecking = SALAH
KeepChecking = SALAH
Untuk I = 0 sampai UBound(ary)
Jika I = UBound(ary) Lalu Keluar Untuk
Jika ary(I) > ary(I+1) Maka
Nilai Pertama = ary(I)
Nilai Kedua = ary(I+1)
ary(I) = Nilai Kedua
ary(I+1) = Nilai Pertama
KeepChecking = BENAR
Akhiri Jika
Berikutnya
Lingkaran
Urutkan = ary
Fungsi akhir
Contoh aplikasi fungsi pengurutan array
DimMyArray
Array Saya = Array(1,5,123,12,98)
MyArray = Urutkan(MyArray)
Untuk I = Lbound(MyArray) hingga Ubound(MyArray)
Respon.Tulis MyArray(I) & <br>
Berikutnya
Pisahkan string dan kembalikan array
DimMyArray
MyArray = Split(string, pemisah)
Untuk I = Lbound(MyArray) hingga Ubound(MyArray)
Respon.Tulis MyArray(I) & <br>
Berikutnya
Menggunakan array dalam Aplikasi dan Sesi
Aplikasi.Kunci
Aplikasi(Array Tersimpan) = Array Saya
Aplikasi. Buka kunci
LocalArray = Aplikasi(StoredArray)
Timpa array di Aplikasi
Aplikasi.Kunci
Aplikasi(Array Tersimpan) = Array Lokal
Aplikasi. Buka kunci
Penggunaan sesi sama dengan Aplikasi
Impor data dari database ke dalam array
DimMyArray
Dapatkan semua catatan
MyArray = RS.GetRows
Dapatkan 10 catatan pertama
MyArray = RS.GetRows(10)
Untuk baris = 0 Ke UBound(MyArray, 2)
Untuk col = 0 Ke UBound(MyArray, 1)
Response.Write (kolom, baris) & <br>
Berikutnya
Berikutnya
Lewati array ke halaman lain
Ada banyak cara untuk meneruskan array ke halaman lain, seperti tiga cara berikut:
1. Tentukan string yang dipisahkan koma, lalu gunakan fungsi Split untuk membuat ulang array di halaman berikutnya.
2. Simpan array dalam variabel Sesi lalu panggil di halaman berikutnya.
3. Lewatkan array melalui area tersembunyi formulir. Array tersebut secara otomatis dipisahkan dengan koma, lalu gunakan fungsi Split untuk membuat ulang array.
Dua metode pertama bagus, tetapi keduanya lebih rumit daripada metode ketiga. Di sini kami hanya akan memperkenalkan yang ketiga karena paling sederhana.
File 1.asp:
<%
redupkan aku
redupkan MyArray(20)
untuk I=0 hingga 20
myArray(I)=Item & I
Berikutnya
%>
<html>
<tubuh>
<nama formulir=metode formulir pengujian=tindakan posting=2.asp>
<%
untuk I=0 hingga ubound(myArray)
respon.tulis <tipe input=nama tersembunyi=nilaiArraysaya=' & Arraysaya(I) & '>
Berikutnya
%>
<p>
<tipe masukan=kirim>
</bentuk>
</tubuh>
</html>
Apa yang kita lakukan di atas adalah menggunakan bidang implisit terpisah untuk menyimpan setiap elemen dalam array dalam sebuah formulir.
File 2.asp
<html>
<tubuh>
<%
redupkan arrString
redupkan array saya
redupkan aku
arrString=permintaan(array saya)
myArray = terbagi(arrString,,)
untuk I=0 hingga ubound(myArray)
respon.tulis Item &I& = & myArray(I) & <br> & vbCrLf
Berikutnya
%>
</tubuh>
</html>