Buscar..


Sintaxis

  • ArrayNew (dimension, isSynchronized)

Parámetros

Nombre Descripción
Dimensión Número de dimensiones en la nueva matriz: 1, 2 o 3
está sincronizado Cuando es falso , crea una matriz no sincronizada. Cuando es verdadera , la función devuelve una matriz sincronizada.

Observaciones

En una matriz sincronizada, más de dos subprocesos no pueden acceder a la matriz simultáneamente. Otros subprocesos tienen que esperar hasta que el subproceso activo complete su trabajo, lo que resulta en un rendimiento significativo.

En la versión ColdFusion 2016, puede usar una matriz no sincronizada y permitir que múltiples hilos accedan al mismo objeto de la matriz simultáneamente.

Creando Arrays

Creando arrays explícitamente usando ArrayNew ()

Declare una matriz con la función ArrayNew. Especifique el número de dimensiones como un argumento.

  • ArrayNew ( dimensión ) crea una matriz de 1–3 dimensiones.
  • Las matrices de ColdFusion se expanden dinámicamente a medida que se agregan los datos.
  • ArrayNew () devuelve una matriz.

Historia

Introducido en ColdFusion MX 6

Declaración

CFML

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

CFScript Tenga en cuenta que dentro de una función debe usar var scoping. Las versiones anteriores de CF requerían que el ámbito var sea lo primero en una función; Las versiones posteriores lo permiten en cualquier lugar en una función.

<cfscript>
    oneDimensionArray = ArrayNew(1);

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

Después de crear la matriz, agregue elementos utilizando los índices de elementos. El índice Coldfusion Array comienza desde 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>

Usando ArrayAppend ()

Puede agregar elementos a una matriz utilizando la función ArrayAppend(array, value) .

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

<cfdump> contenido de la matriz usando <cfdump> :

<cfdump var="#oneDimensionArray#">

Resultados:

Resultado de volcado de matriz de una dimensión

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>

Salida del contenido de la matriz usando <cfdump>

<cfdump var="#twoDimensionArray#">

Resultado:

Resultado de volcado de matriz de dos dimensiones

Cada elemento contiene otra matriz, que almacenará los valores.

Creando Array 1-D implícitamente

Al crear una matriz implícitamente, los corchetes ([]) rodean el contenido de la matriz con separadores de coma.

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

Esta declaración es equivalente a las cuatro declaraciones utilizadas para crear el oneDimensionArray anterior. El resultado es el mismo cuando se usa:

<cfdump var="#oneDimensionArrayImplicit#">

Crear 2-D Array implícitamente

<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]>

Salida del contenido usando

<cfdump var="#twoDimensionArrayImplicit#">

Array implícito de dos dimensiones

Declaración Explicita Alternativa

También puedes declarar 1 Dimension Array como

<cfset oneDimensionArray = []>

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

Esta declaración es la misma que la de usar ArrayNew(1) .

Pero si intentas declarar 2 Dimension Array como

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

se producirá un error al procesar esta solicitud.

La siguiente declaración procesará la solicitud:

<cfset twoDimensionArray =[]>

pero la variable twoDimensionArray no será realmente una matriz dentro de la matriz (o matriz de 2 dimensiones). En realidad contiene estructura dentro de 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#">

Resultado:

Dos Dimension Array usando [] declaración explícita

Array en CFScript

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

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

Resultado:

Array en CFSCRIPT

Además, podemos declarar una matriz de una dimensión como:

oneDimensionArray = [];

Alternativamente, CF introdujo WriteDump() de CF9 como una función equivalente a la etiqueta <cfdump> que se puede usar en <cfscript> .

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

Del mismo modo, para 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#">

Resultado:

Array de dos dimensiones en CFScript

Información general

Primero, información general sobre cómo se comportan las matrices en Coldfusion en comparación con otros lenguajes de programación.

  • Los arreglos solo pueden tener índices numéricos (si desea que un índice de cadena use struct su lugar)
  • Las matrices comienzan en el índice [1]
  • Las matrices pueden tener una o más dimensiones.


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow