coldfusion
Массивы ColdFusion
Поиск…
Синтаксис
- 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>
Результат:
Кроме того, мы можем объявить один размерный массив как:
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#">
Результат:
Основная информация
Сначала дается общая информация о том, как массивы ведут себя в Coldfusion по сравнению с другими языками программирования.
- Массивы могут иметь только числовые индексы (если вы хотите, чтобы индекс строки использовал
structs вместо) - Массивы начинаются с индекса [1]
- Массивы могут иметь одну или более габаритов



![два массива измерений с использованием [] явного объявления](http://i.stack.imgur.com/6nHIJ.png)

