заполнить массив с помощью запроса cfloop

Я пытаюсь построить массив, используя cfloop данных запроса. Я не уверен, как увеличить количество массивов вместо того, чтобы каждый раз перезаписывать первое значение в массиве? Если это не имеет смысла, пожалуйста, дайте мне знать.

<CFSET MyArray=ArrayNew(1)>
<CFLOOP QUERY="GetPermission">
   <CFIF #GetPermission.Permission_ID GT 10>
        <CFSET MyArray[increment value][GetPermission.Permission_ID]>
   </CFIF>
</CFLOOP>

Итак, мой массив должен выглядеть примерно так: MyArray[11,14,24,25,31]


person Denoteone    schedule 03.03.2016    source источник


Ответы (3)


Если вам действительно не нужен индекс для чего-то другого, просто опустите его и используйте ArrayApend which "... Добавляет элемент массива в конец указанного массива".

 <cfset ArrayAppend( MyArray, GetPermission.Permission_ID)>

Кроме того, когда вы сталкиваетесь с подобной проблемой, полезно просмотреть функции по категориям раздела документации. Большинство функций очень хорошо названы. Простой выбор правильной категории и просмотр названий функций часто дает ответ сразу же. Тогда это просто вопрос чтения документации по использованию и тестирования кода.

Обновление: Однако, как обсуждалось в вашем другом потоке, в конечном счете, есть лучшие варианты, чем массивы, для этой конкретной задачи (например, обновить список разрешений).

person Leigh    schedule 03.03.2016
comment
Спасибо Лей за помощь и рекомендацию. Я нахожу документацию Adobe ColdFusion очень полезной и простой в использовании, но в данном случае я задавал неправильный вопрос во время своего исследования. Еще раз спасибо! - person Denoteone; 03.03.2016

Для приращения вы можете сделать любое из следующего:

  • Используйте функцию ArrayAppend(), как упомянул Ли.
  • Установите переменную счетчика вверху, а затем используйте ее, а затем увеличьте значение
  • Используйте ArrayLen(myArray)+1 в качестве счетчика приращений

Просто в качестве примечания; сценарий, написанный вами, имеет пару проблем.

person Viv    schedule 03.03.2016
comment
Спасибо за описание других вариантов. +1 - person Denoteone; 03.03.2016

Решение Ли на 100 % точно, но в зависимости от конкретной ситуации вам может даже не понадобиться выгружать результат запроса в массив. Вы можете получить доступ к значениям в результате запроса напрямую.

У Бена Наделя есть пост об этом здесь: http://www.bennadel.com/blog/149-ask-ben-converting-a-query-to-a-struct.htm

person Steve    schedule 03.03.2016