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:

jeden wynik zrzutu tablicy wymiarów

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:

Wynik zrzutu tablicy dwóch wymiarów

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#">

Domniemana tablica dwóch wymiarów

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:

two Dimension Array przy użyciu [] jawnej deklaracji

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:

Tablica w CFSCRIPT

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:

Tablica dwuwymiarowa w CFScript

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 struct s)
  • Tablice zaczynają się od indeksu [1]
  • Tablice mogą mieć jeden lub więcej wymiarów


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow