coldfusion
Tablice ColdFusion
Szukaj…
Składnia
- ArrayNew (wymiar, isSynchronized)
Parametry
| Nazwa | Opis |
|---|---|
| Wymiar | Liczba wymiarów w nowej tablicy: 1, 2 lub 3 |
| isSynchronized | W przypadku wartości false tworzy niezsynchronizowaną tablicę. W przypadku wartości true funkcja zwraca tablicę zsynchronizowaną. |
Uwagi
W zsynchronizowanej tablicy więcej niż dwa wątki nie mogą uzyskać dostępu do tablicy jednocześnie. Inne wątki muszą czekać, aż aktywny wątek zakończy pracę, co spowoduje znaczną wydajność.
W wersji ColdFusion 2016 możesz używać niezsynchronizowanej tablicy i pozwolić wielu wątkom na dostęp do tego samego obiektu tablicy jednocześnie.
Tworzenie tablic
Bezpośrednie tworzenie tablic za pomocą ArrayNew ()
Zadeklaruj tablicę za pomocą funkcji ArrayNew. Jako liczbę podaj liczbę wymiarów.
- ArrayNew ( wymiar ) tworzy tablicę o 1–3 wymiarach.
- Tablice ColdFusion rozwijają się dynamicznie w miarę dodawania danych.
- ArrayNew () zwraca tablicę.
Historia
Wprowadzone w ColdFusion MX 6
Deklaracja
CFML
<!--- One Dimension Array--->
<cfset oneDimensionArray = ArrayNew(1)>
CFScript Zauważ, że wewnątrz funkcji powinieneś używać var scoping. Wcześniejsze wersje CF wymagały, aby zakres zmiennych był pierwszą rzeczą w funkcji; późniejsze wersje pozwalają na to w dowolnym miejscu funkcji.
<cfscript>
oneDimensionArray = ArrayNew(1);
public void function myFunc() {
var oneDimensionArray = ArrayNew(1);
}
</cfscript>
Po utworzeniu tablicy dodaj elementy za pomocą indeksów elementów. Indeks tablicy Coldfusion zaczyna się od 1:
CFML
<cfset oneDimensionArray[1] = 1>
<cfset oneDimensionArray[2] = 'one'>
<cfset oneDimensionArray[3] = '1'>
CFScript
<cfscript>
oneDimensionArray[1] = 1;
oneDimensionArray[2] = 'one';
oneDimensionArray[3] = '1';
</cfscript>
Korzystanie z ArrayAppend ()
Możesz dodawać elementy do tablicy za pomocą funkcji ArrayAppend(array, value) .
<cfscript>
ArrayAppend(oneDimensionArray, 1);
ArrayAppend(oneDimensionArray, 'one');
ArrayAppend(oneDimensionArray, '1');
</cfscript>
Wyświetl zawartość tablicy za pomocą <cfdump> :
<cfdump var="#oneDimensionArray#">
Wyniki:
CFML
<!--- Two Dimension Array--->
<cfset twoDimensionArray = ArrayNew(2)>
<cfset twoDimensionArray[1][1] = 1>
<cfset twoDimensionArray[1][2] = 2>
<cfset twoDimensionArray[2][1] = 3>
<cfset twoDimensionArray[2][2] = 4>
CFScript
<cfscript>
twoDimensionArray = ArrayNew(2);
twoDimensionArray[1][1] = 1;
twoDimensionArray[1][2] = 2;
twoDimensionArray[2][1] = 3;
twoDimensionArray[2][2] = 4;
</cfscript>
Wyprowadzanie zawartości tablicy za pomocą <cfdump>
<cfdump var="#twoDimensionArray#">
Wynik:
Każdy element zawiera inną tablicę, w której będą przechowywane wartości.
Tworzenie macierzy 1-D niejawnie
Podczas niejawnego tworzenia tablicy nawiasy kwadratowe ([]) otaczają zawartość tablicy separatorami przecinkowymi.
<cfset oneDimensionArrayImplicit = [ 1 ,'one','1' ]>
Ta instrukcja jest równoważna z czterema instrukcjami użytymi do utworzenia powyższego oneDimensionArray. Rezultaty są takie same przy użyciu:
<cfdump var="#oneDimensionArrayImplicit#">
Utwórz tablicę 2D w sposób niejawny
<cfset twoDimensionArrayImplicit = [[ 1 , 2 ],[ 3 , 4 ],[ 5 , 6 ]]>
Lub:
<cfset firstElement = ["1", "2"]>
<cfset secondElement= ["3", "4"]>
<cfset thirdElement = ["5", "6"]>
<cfset twoDimensionArrayImplicit = [firstElement , secondElement, thirdElement]>
Przesyłanie treści za pomocą
<cfdump var="#twoDimensionArrayImplicit#">
Alternatywna wyraźna deklaracja
Możesz także zadeklarować 1 tablicę wymiarów jako
<cfset oneDimensionArray = []>
<cfscript>
oneDimensionArray = [];
</cfscript>
Ta deklaracja jest taka sama jak deklaracja ArrayNew(1) .
Ale jeśli spróbujesz zadeklarować 2 Tablice Wymiarów jako
<cfset twoDimensionArray =[][]> //Invalid CFML construct
podczas przetwarzania tego żądania wystąpi błąd.
Następująca instrukcja przetworzy żądanie:
<cfset twoDimensionArray =[]>
ale zmienna twoDimensionArray rzeczywistości nie będzie twoDimensionArray wewnątrz tablicy (lub tablicy 2-wymiarowej). W rzeczywistości zawiera strukturę w tablicy.
<cfset twoDimensionArray =[]>
<cfset twoDimensionArray[1][1] = 1>
<cfset twoDimensionArray[1][2] = 2>
<cfset twoDimensionArray[2][1] = 3>
<cfset twoDimensionArray[2][2] = 4>
<cfdump var="#twoDimensionArray#">
Wynik:
Tablica w CFScript
<cfscript>
oneDimensionArray = ArrayNew(1);
oneDimensionArray[1] = 1;
oneDimensionArray[2] = 'one';
oneDimensionArray[3] = '1';
</cfscript>
<cfif IsDefined("oneDimensionArray")>
<cfdump var="#oneDimensionArray#">
</cfif>
Wynik:
Możemy również zadeklarować jedną tablicę wymiarów jako:
oneDimensionArray = [];
Alternatywnie, CF wprowadził WriteDump() z CF9 jako funkcję równoważną znacznikowi <cfdump> którego można użyć w <cfscript> .
<cfscript>
WriteDump(oneDimensionArray);
</cfscript>
Podobnie w przypadku tablicy 2 wymiarów:
<cfscript>
twoDimensionArray = ArrayNew(2);
twoDimensionArray[1][1] = 1;
twoDimensionArray[1][2] = 2;
twoDimensionArray[2][1] = 3;
twoDimensionArray[2][2] = 4;
</cfscript>
<cfdump var="#twoDimensionArray#">
Wynik:
Informacje ogólne
Najpierw kilka ogólnych informacji o tym, jak zachowują się tablice w Coldfusion w porównaniu do innych języków programowania.
- Tablice mogą mieć tylko indeksy numeryczne (jeśli chcesz mieć indeks ciągów, użyj
structs) - Tablice zaczynają się od indeksu [1]
- Tablice mogą mieć jeden lub więcej wymiarów



![two Dimension Array przy użyciu [] jawnej deklaracji](http://i.stack.imgur.com/6nHIJ.png)

