Ricerca…


Sintassi

  • ArrayNew (dimensione, isSynchronized)

Parametri

Nome Descrizione
Dimensione Numero di dimensioni nel nuovo array: 1, 2 o 3
IsSynchronized Quando falso , crea un array non sincronizzato, quando è true , la funzione restituisce un array sincronizzato.

Osservazioni

In una matrice sincronizzata, più di due thread non possono accedere all'array contemporaneamente. Gli altri thread devono attendere fino a quando il thread attivo non completa il suo lavoro, con conseguenti prestazioni significative.

Nel 2016, con ColdFusion, è possibile utilizzare una matrice non sincronizzata e consentire a più thread di accedere contemporaneamente allo stesso oggetto array.

Creare matrici

Creazione di array in modo esplicito utilizzando ArrayNew ()

Dichiara un array con la funzione ArrayNew. Specificare il numero di dimensioni come argomento.

  • ArrayNew ( dimensione ) crea una matrice di 1-3 dimensioni.
  • Gli array ColdFusion si espandono dinamicamente man mano che i dati vengono aggiunti.
  • ArrayNew () restituisce una matrice.

Storia

Introdotto in ColdFusion MX 6

Dichiarazione

CFML

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

CFScript Si noti che all'interno di una funzione si dovrebbe usare var scope. Le versioni precedenti di CF richiedevano che var scope fosse la prima cosa in una funzione; versioni successive lo consentono ovunque in una funzione.

<cfscript>
    oneDimensionArray = ArrayNew(1);

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

Dopo aver creato la matrice, aggiungi gli elementi usando gli indici degli elementi. L'indice Coldfusion Array parte da 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>

Utilizzo di ArrayAppend ()

È possibile aggiungere elementi a un array utilizzando la funzione ArrayAppend(array, value) .

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

<cfdump> contenuto dell'array usando <cfdump> :

<cfdump var="#oneDimensionArray#">

risultati:

Dump di un array di dimensioni

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>

Emissione del contenuto dell'array usando <cfdump>

<cfdump var="#twoDimensionArray#">

Risultato:

Risultato Dump di array di due dimensioni

Ogni elemento contiene un'altra matrice, che memorizzerà i valori.

Creazione di array 1-D in modo implicito

Quando si crea un array implicitamente, le parentesi ([]) circondano il contenuto dell'array con separatori di virgola.

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

Questa istruzione è equivalente alle quattro istruzioni utilizzate per creare il file oneDimensionArray sopra. Il risultato è lo stesso quando si usa:

<cfdump var="#oneDimensionArrayImplicit#">

Crea array 2-D in modo implicito

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

O:

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

Esecuzione del contenuto utilizzando

<cfdump var="#twoDimensionArrayImplicit#">

Matrice di due dimensioni implicita

Dichiarazione esplicita alternativa

Inoltre puoi dichiarare 1 Dimensione Matrice come

<cfset oneDimensionArray = []>

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

Questa dichiarazione è la stessa di quella di ArrayNew(1) .

Ma se provate a dichiarare 2 Dimension Array come

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

si verificherà un errore durante l'elaborazione di questa richiesta.

La seguente dichiarazione elaborerà la richiesta:

<cfset twoDimensionArray =[]>

ma variable twoDimensionArray non sarà in realtà una matrice all'interno di Array (o Array a 2 dimensioni). In realtà contiene una struttura all'interno di 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#">

Risultato:

two Dimension Array usando [] dichiarazione esplicita

Matrice in CFScript

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

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

Risultato:

Matrice in CFSCRIPT

Inoltre, possiamo dichiarare una matrice di una dimensione come:

oneDimensionArray = [];

In alternativa, CF ha introdotto WriteDump() da CF9 come una funzione equivalente al tag <cfdump> che può essere utilizzato in <cfscript> .

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

Allo stesso modo, per la matrice di 2 dimensioni:

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

Risultato:

Two Dimension Array in CFScript

Informazione generale

Prima alcune informazioni generali su come si comportano gli array in Coldfusion rispetto ad altri linguaggi di programmazione.

  • Le matrici possono avere solo indici numerici (se si desidera avere un indice di stringa utilizzare invece struct s)
  • Gli array iniziano all'indice [1]
  • Le matrici possono avere una o più dimensioni


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow