Suche…


Syntax

  • ArrayNew (Dimension, isSynchronized)

Parameter

Name Beschreibung
Abmessungen Anzahl der Dimensionen in einem neuen Array: 1, 2 oder 3
isSynchronized Bei false wird ein nicht synchronisiertes Array erstellt. Wenn true , gibt die Funktion ein synchronisiertes Array zurück.

Bemerkungen

In einem synchronisierten Array können nicht mehr als zwei Threads gleichzeitig auf das Array zugreifen. Andere Threads müssen warten, bis der aktive Thread seinen Job abgeschlossen hat, was zu einer erheblichen Leistung führt.

In der ColdFusion-Version 2016 können Sie ein nicht synchronisiertes Array verwenden und zulassen, dass mehrere Threads gleichzeitig auf dasselbe Arrayobjekt zugreifen.

Arrays erstellen

Arrays explizit mit ArrayNew () erstellen

Deklarieren Sie ein Array mit der Funktion ArrayNew. Geben Sie die Anzahl der Dimensionen als Argument an.

  • ArrayNew ( dimension ) erstellt ein Array mit 1–3 Dimensionen.
  • ColdFusion-Arrays werden beim Hinzufügen von Daten dynamisch erweitert.
  • ArrayNew () gibt ein Array zurück.

Geschichte

Eingeführt in ColdFusion MX 6

Erklärung

CFML

<!--- One Dimension Array--->
<cfset oneDimensionArray = ArrayNew(1)>

CFScript Beachten Sie, dass Sie innerhalb einer Funktion var Scoping verwenden sollten. Frühere Versionen von CF erforderten, dass Var-Scoping das Erste in einer Funktion ist. spätere Versionen erlauben es überall in einer Funktion.

<cfscript>
    oneDimensionArray = ArrayNew(1);

    public void function myFunc() { 
        var oneDimensionArray = ArrayNew(1);
    } 
</cfscript>

Fügen Sie nach dem Erstellen des Arrays Elemente mithilfe der Elementindizes hinzu. Der Coldfusion Array-Index beginnt bei 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>

ArrayAppend () verwenden

Sie können einem Array Elemente hinzufügen, indem Sie die Funktion ArrayAppend(array, value) .

<cfscript>
    ArrayAppend(oneDimensionArray, 1);
    ArrayAppend(oneDimensionArray, 'one');
    ArrayAppend(oneDimensionArray, '1');
</cfscript>

Ausgabe des Array-Inhalts mit <cfdump> :

<cfdump var="#oneDimensionArray#">

Ergebnisse:

Ergebnis eines Dimensions-Array-Dumps

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>

Ausgabe des Arrayinhalts mit <cfdump>

<cfdump var="#twoDimensionArray#">

Ergebnis:

Ergebnis des Array-Dumps mit zwei Dimensionen

Jedes Element enthält ein anderes Array, in dem die Werte gespeichert werden.

1-D-Array implizit erstellen

Beim impliziten Erstellen eines Arrays umgeben Klammern ([]) den Array-Inhalt mit Komma-Trennzeichen.

<cfset oneDimensionArrayImplicit = [ 1 ,'one','1' ]>

Diese Anweisung entspricht den vier Anweisungen, die zum Erstellen des obigen oneDimensionArray verwendet werden. Das Ergebnis ist das Gleiche bei der Verwendung von:

<cfdump var="#oneDimensionArrayImplicit#">

Erstellen Sie implizit ein 2D-Array

<cfset twoDimensionArrayImplicit = [[ 1 , 2 ],[ 3 , 4 ],[ 5 , 6 ]]>

Oder:

<cfset firstElement = ["1", "2"]> 
<cfset secondElement= ["3", "4"]> 
<cfset thirdElement = ["5", "6"]> 
<cfset twoDimensionArrayImplicit = [firstElement , secondElement, thirdElement]>

Inhalt mit ausgeben

<cfdump var="#twoDimensionArrayImplicit#">

Implizites Array mit zwei Dimensionen

Alternative explizite Erklärung

Sie können auch 1 Dimension Array als deklarieren

<cfset oneDimensionArray = []>

<cfscript>
    oneDimensionArray = [];
</cfscript>

Diese Deklaration ist dieselbe wie bei der Verwendung von ArrayNew(1) .

Aber wenn Sie versuchen, 2 Dimension Array als zu deklarieren

<cfset twoDimensionArray =[][]>    //Invalid CFML construct

Bei der Verarbeitung dieser Anforderung tritt ein Fehler auf.

Die folgende Anweisung verarbeitet die Anfrage:

<cfset twoDimensionArray =[]>

Die Variable twoDimensionArray jedoch kein Array innerhalb eines Arrays (oder eines 2-Dimension-Arrays). Es enthält tatsächlich eine Struktur innerhalb des Arrays.

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

Ergebnis:

zwei Dimension Array mit expliziter Deklaration []

Array in CFScript

<cfscript>
    oneDimensionArray = ArrayNew(1);
    oneDimensionArray[1] = 1;
    oneDimensionArray[2] = 'one';
    oneDimensionArray[3] = '1';
</cfscript>

<cfif IsDefined("oneDimensionArray")>
    <cfdump var="#oneDimensionArray#">
</cfif>

Ergebnis:

Array in CFSCRIPT

Außerdem können wir ein Dimension-Array als deklarieren:

oneDimensionArray = [];

Alternativ eingeführt CF WriteDump() aus CF9 als Funktion äquivalent zu dem <cfdump> Tag , das verwendet werden kann in <cfscript> .

<cfscript>
    WriteDump(oneDimensionArray);
</cfscript>

Ähnlich für 2 Dimension Array:

<cfscript>
    twoDimensionArray = ArrayNew(2);
    twoDimensionArray[1][1] = 1;
    twoDimensionArray[1][2] = 2;
    twoDimensionArray[2][1] = 3;
    twoDimensionArray[2][2] = 4;
</cfscript>
<cfdump var="#twoDimensionArray#">

Ergebnis:

Array mit zwei Dimensionen in CFScript

Allgemeine Information

Zunächst einige allgemeine Informationen zum Verhalten von Arrays in Coldfusion im Vergleich zu anderen Programmiersprachen.

  • Arrays können nur numerische Indizes haben (wenn Sie einen String-Index haben möchten, verwenden Sie stattdessen die struct en)
  • Arrays beginnen am Index [1]
  • Arrays können eine oder mehrere Dimensionen haben


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow