2014-01-30 2 views
0

Я работал с 2D-массивом на прошлой неделе, и независимо от того, что я пытался, я не смог получить доступ к элементам данных в массиве. Coldfusion все время возвращала ошибки «сложного/простого значения» или индекс элемента в позиции 1 и т. Д.Coldfusion: индекс элемента в 2D массиве

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

Я пытался читать в текстовом файле:

<cfset myarr = arraynew(2) /> 

<cffile action="read" file="#filepath#" variable="filedata" /> 

    <cfloop list="#filedata#" index="line" delimiters="#chr(13)##chr(10)#"> 

     <cfset line = trim(line) /> 

     <cfif line contains "routing number"> 
      <cfset arrayappend(myarr[1], listlast(line, ":")) /> 
     <cfelseif line contains "account number"> 
      <cfset arrayappend(myarr[2], listlast(line, ":")) /> 
     </cfif> 

     <cfloop index="j" from="1" to="#arraylen(myarr)#" step="1"> 
      <cfoutput> 
       #listgetat(myarr[line][j])# 
      </cfoutput> 
     </cfloop> 
    </cfloop> 

Теперь, если я сбросить мой массив, массив выглядит правильно

array 
1 
    1 999999999 
    2 111111111 

array 
2 
    1 12345678 
    2 987654321 

Однако вложенный цикл выше не становится правильное положение элемента в индексе, и я не понимаю, почему.

Спасибо за любую помощь или понимание, которое вы можете предоставить.

+0

Вышеуказанное не компилируется. «Ошибка проверки параметров для функции LISTGETAT» У вас есть исходный код? – Leigh

+0

Ваш второй цикл не имеет смысла. Если вы добавляете в myarr [1] и myarr [2], почему вы получаете индекс в [line] [j], когда строка является LINE файла ... не номер строки. И j зацикливается на arraylen myarr, но не хотите ли вы узнать длину myarr [1] или myarr [2] - действительно нужен оригинальный код, это довольно грязно. –

+2

Просто FYI - Когда цикл за строкой над большим файлом ... вы можете просто использовать это ... он чище, и вам не нужно беспокоиться о разделителях и т. Д. do stuff

ответ

1

Ваша логика просто не имеет никакого смысла:

  1. Ваша вторая петля пытается перебрать массив в то время как вы все еще строит его (это не невозможно, но не похоже, что вы хотите делать,
  2. вы зацикливание по длине первого измерения массива (arraylen(myarr)), но затем, используя эту переменную в качестве индекса в второй размерности массива
  3. я сильно подозреваю. вы хотите, чтобы структура была первым измерением, а не массивом. Что такое nat данных данных?

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

Этот ответ не доводит вас до того, где вы хотите закончить (потому что вы не определили это четко), но это объясняет, почему вы определенно не попадаете туда.

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

+0

Текстовый файл с данными ACH. У меня нет фактического кода для публикации, потому что я оказался в другом направлении и отказался от кода массива, над которым я работал. Спасибо за ответ. Я не хочу тратить время на этот вопрос. – user3096976

+0

Право. Поэтому ответьте и закройте вопрос или удалите его. Не оставляйте его висящим, так как люди будут думать, что он все еще нуждается в ответе. Рекомендовать просто удалить его. –

Смежные вопросы