Recherche…


Syntaxe

  • ArrayNew (dimension, isSynchronized)

Paramètres

prénom La description
Dimension Nombre de dimensions dans le nouveau tableau: 1, 2 ou 3
est synchronisé Si la valeur est false , crée un tableau non synchronisé. Lorsque la valeur est true , la fonction renvoie un tableau synchronisé.

Remarques

Dans un tableau synchronisé, plus de deux threads ne peuvent pas accéder au tableau simultanément. Les autres threads doivent attendre que le thread actif termine son travail, ce qui entraîne des performances significatives.

Dans la version ColdFusion 2016, vous pouvez utiliser un tableau non synchronisé et laisser plusieurs threads accéder au même objet de tableau simultanément.

Création de tableaux

Créer des tableaux explicitement en utilisant ArrayNew ()

Déclarez un tableau avec la fonction ArrayNew. Spécifiez le nombre de dimensions en tant qu'argument.

  • ArrayNew ( dimension ) crée un tableau de 1 à 3 dimensions.
  • Les baies ColdFusion se développent dynamiquement à mesure que les données sont ajoutées.
  • ArrayNew () renvoie un tableau.

Histoire

Introduit dans ColdFusion MX 6

Déclaration

CFML

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

CFScript Notez que dans une fonction, vous devez utiliser var scoping. Les versions antérieures de CF nécessitaient que var scoping soit la première chose d'une fonction; les versions ultérieures le permettent n'importe où dans une fonction.

<cfscript>
    oneDimensionArray = ArrayNew(1);

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

Après avoir créé le tableau, ajoutez des éléments en utilisant les index d'élément. L'indice Coldfusion Array commence à 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>

Utiliser ArrayAppend ()

Vous pouvez ajouter des éléments à un tableau en utilisant la fonction ArrayAppend(array, value) .

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

<cfdump> contenu du tableau à l'aide de <cfdump> :

<cfdump var="#oneDimensionArray#">

Résultats:

un résultat de vidage d'un tableau de dimension

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>

Sortie du contenu du tableau en utilisant <cfdump>

<cfdump var="#twoDimensionArray#">

Résultat:

Résultat de vidage d'un tableau à deux dimensions

Chaque élément contient un autre tableau, qui stockera les valeurs.

Création implicite d'un tableau 1-D

Lors de la création implicite d'un tableau, les crochets ([]) entourent le contenu du tableau avec des séparateurs de virgules.

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

Cette instruction est équivalente aux quatre instructions utilisées pour créer le oneDimensionArray ci-dessus. Le résultat est le même en utilisant:

<cfdump var="#oneDimensionArrayImplicit#">

Créer implicitement un tableau 2D

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

Ou:

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

Sortie du contenu en utilisant

<cfdump var="#twoDimensionArrayImplicit#">

Tableau implicite à deux dimensions

Déclaration explicite alternative

Vous pouvez également déclarer 1 tableau de dimension comme

<cfset oneDimensionArray = []>

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

Cette déclaration est la même que pour ArrayNew(1) .

Mais si vous essayez de déclarer le tableau à 2 dimensions comme

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

une erreur se produira lors du traitement de cette demande.

La déclaration suivante traitera la demande:

<cfset twoDimensionArray =[]>

mais la variable twoDimensionArray ne sera pas un tableau dans Array (ou 2-Dimension Array). Il contient en fait une structure dans 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#">

Résultat:

deux tableau de dimension utilisant la déclaration explicite []

Tableau dans CFScript

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

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

Résultat:

Tableau dans CFSCRIPT

En outre, nous pouvons déclarer un tableau à une dimension comme:

oneDimensionArray = [];

Sinon, CF a introduit WriteDump() partir de CF9 en tant que fonction équivalente à la <cfdump> qui peut être utilisée dans <cfscript> .

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

De même, pour le tableau à deux dimensions:

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

Résultat:

Tableau à deux dimensions dans CFScript

informations générales

Tout d'abord, des informations générales sur le comportement des tableaux dans Coldfusion par rapport aux autres langages de programmation.

  • Les tableaux ne peuvent avoir que des index numériques (si vous souhaitez avoir un index de chaîne, utilisez plutôt struct s)
  • Les tableaux commencent à l'index [1]
  • Les tableaux peuvent avoir une ou plusieurs dimensions


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow