Sök…


Syntax

  • ArrayNew (dimension, är synkroniserad)

parametrar

namn Beskrivning
Dimensionera Antal dimensioner i ny matris: 1, 2 eller 3
isSynchronized När falskt skapas en osynkroniserad matris, När sant , returnerar funktionen en synkroniserad matris.

Anmärkningar

I en synkroniserad matris kan fler än två trådar inte komma åt matrisen samtidigt. Andra trådar måste vänta tills den aktiva tråden slutför sitt jobb, vilket resulterar i betydande prestanda.

Under 2016 release av ColdFusion kan du använda en osynkroniserad matris och låta flera trådar komma åt samma arrayobjekt samtidigt.

Skapa matriser

Skapa arrayer uttryckligen med ArrayNew ()

Förklara en matris med ArrayNew-funktionen. Ange antalet dimensioner som ett argument.

  • ArrayNew ( dimension ) skapar en matris med 1-3 dimensioner.
  • ColdFusion-matriser expanderar dynamiskt när data läggs till.
  • ArrayNew () returnerar en matris.

Historia

Introducerad i ColdFusion MX 6

Deklaration

CFML

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

CFScript Observera att du inom en funktion ska använda var scoping. Tidigare versioner av CF krävde att var scoping var det första i en funktion; senare versioner tillåter det var som helst i en funktion.

<cfscript>
    oneDimensionArray = ArrayNew(1);

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

När du har skapat matrisen lägger du till element med elementindexen. Coldfusion Array-indexet börjar från 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>

Använda ArrayAppend ()

Du kan lägga till element i en matris med funktionen ArrayAppend(array, value) .

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

<cfdump> med <cfdump> :

<cfdump var="#oneDimensionArray#">

Resultat:

en Dimension Array Dump Resultat

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>

Skickar ut innehållet i matrisen med <cfdump>

<cfdump var="#twoDimensionArray#">

Resultat:

Resultat med två dimensioner Array Dump

Varje element innehåller en annan array som lagrar värdena.

Skapa en-D-grupp implicit

När du skapar en matris implicit, omger parenteser ([]) matrisinnehållet med kommaavskiljare.

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

Detta uttalande motsvarar de fyra uttalandena som används för att skapa ovanstående OneDimensionArray. Resultatet är samma när du använder:

<cfdump var="#oneDimensionArrayImplicit#">

Skapa 2-D-array implicit

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

Eller:

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

Skickar ut innehållet med

<cfdump var="#twoDimensionArrayImplicit#">

Implicit two Dimension Array

Alternativ explicit förklaring

Du kan också förklara 1 Dimension Array som

<cfset oneDimensionArray = []>

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

Denna deklaration är densamma som för ArrayNew(1) .

Men om du försöker förklara 2 Dimension Array som

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

ett fel kommer att uppstå vid bearbetning av denna begäran.

Följande uttalande kommer att behandla begäran:

<cfset twoDimensionArray =[]>

men variabel twoDimensionArray kommer faktiskt inte en Array inom Array (eller 2-Dimension Array). Den innehåller faktiskt struktur inom Array.

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

Resultat:

två Dimension Array med [] uttrycklig deklaration

Array i CFScript

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

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

Resultat:

Array i CFSCRIPT

Vi kan också förklara en enhetsdimension som som:

oneDimensionArray = [];

Alternativt introducerade CF WriteDump() från CF9 som en funktion ekvivalent med <cfdump> -taggen som kan användas i <cfscript> .

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

På samma sätt 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#">

Resultat:

Två dimensioner-array i CFScript

Allmän information

Först lite allmän information om hur matriser uppför sig i Coldfusion jämfört med andra programmeringsspråk.

  • Arrays kan endast ha numeriska index (om du vill ha ett strängindex använder du struct s istället)
  • Arrays börjar vid index [1]
  • Matriser kan ha en malm fler dimensioner


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow