Поиск…


Синтаксис

  • ArrayNew (измерение, isSynchronized)

параметры

название Описание
измерение Число измерений в новом массиве: 1, 2 или 3
IsSynchronized Когда false , создает несинхронизированный массив. Когда true , функция возвращает синхронизированный массив.

замечания

В синхронизированном массиве более двух потоков не могут одновременно обращаться к массиву. Другие потоки должны ждать, пока активный поток завершит свою работу, что приведет к значительной производительности.

В выпуске ColdFusion в 2016 году вы можете использовать несинхронизированный массив и позволить нескольким потокам одновременно обращаться к одному и тому же объекту массива.

Создание массивов

Создание массивов с использованием ArrayNew ()

Объявите массив с помощью функции ArrayNew. Укажите количество измерений в качестве аргумента.

  • ArrayNew ( измерение ) создает массив из 1-3 измерений.
  • Массивы ColdFusion динамически расширяются по мере добавления данных.
  • ArrayNew () возвращает массив.

история

Представлен в ColdFusion MX 6

декларация

CFML

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

CFScript Обратите внимание, что внутри функции вы должны использовать var scoping. Раньше версии CF требовали, чтобы var scoping был первым в функции; более поздние версии допускают его в любом месте функции.

<cfscript>
    oneDimensionArray = ArrayNew(1);

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

После создания массива добавьте элементы, используя индексы элементов. Индекс массива Coldfusion начинается с 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 ()

Вы можете добавлять элементы в массив, используя функцию ArrayAppend(array, value) .

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

Выведите содержимое массива с помощью <cfdump> :

<cfdump var="#oneDimensionArray#">

Результаты:

один результат дампа массива измерений

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>

Вывод содержимого массива с помощью <cfdump>

<cfdump var="#twoDimensionArray#">

Результат:

Результат измерения дампа массива размера

Каждый элемент содержит другой массив, который будет хранить значения.

Создание 1-D массива неявно

При создании массива неявно скобки ([]) окружают содержимое массива разделителями запятой.

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

Этот оператор эквивалентен четырем операциям, используемым для создания вышеуказанного oneDimensionArray. Результат при использовании:

<cfdump var="#oneDimensionArrayImplicit#">

Создать двумерный массив неявно

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

Или же:

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

Вывод содержимого с использованием

<cfdump var="#twoDimensionArrayImplicit#">

Неявные два массива измерений

Альтернативная явная декларация

Также вы можете объявить 1 размерный массив как

<cfset oneDimensionArray = []>

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

Это заявление такое же, как использование ArrayNew(1) .

Но если вы попробуете объявить 2 Dimension Array как

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

при обработке этого запроса произойдет ошибка.

Следующее заявление обработает запрос:

<cfset twoDimensionArray =[]>

но переменная twoDimensionArray фактически не будет массивом в массиве (или 2-мерном массиве). Он фактически содержит структуру внутри массива.

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

Результат:

два массива измерений с использованием [] явного объявления

Массив в CFScript

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

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

Результат:

Массив в CFSCRIPT

Кроме того, мы можем объявить один размерный массив как:

oneDimensionArray = [];

Альтернативно, CF ввел WriteDump() из CF9 как функцию, эквивалентную тегу <cfdump> который можно использовать в <cfscript> .

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

Аналогично, для 2-х размерных массивов:

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

Результат:

Два размера массива в CFScript

Основная информация

Сначала дается общая информация о том, как массивы ведут себя в Coldfusion по сравнению с другими языками программирования.

  • Массивы могут иметь только числовые индексы (если вы хотите, чтобы индекс строки использовал struct s вместо)
  • Массивы начинаются с индекса [1]
  • Массивы могут иметь одну или более габаритов


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow