title: Ruby Nested Loop
body: <p>I have a nested loop2(check2) in loop1(check1) but it seems that nested loop2(check2) only runs once.</p>
  
  <p>Both loops contain the same array. This script is used to check for a duplicate id in check1.</p>
  
  <pre><code>check1=["0", "0", "0", "1", "1", "2", "3", "4", "5", "100", "4294967294", "9", "11", "6", "200", "7", "201", "811", "202", "204", "3000", "205", "3001", "3001", "3001"]
  check2 =["0", "0", "0", "1", "1", "2", "3", "4", "5", "100", "4294967294", "9", "11", "6", "200", "7", "201", "811", "202", "204", "3000", "205", "3001", "3001", "3001"]
  </code></pre>
  
  <p>Code:</p>
  
  <pre><code>check1.each do |check1|
    counter=0
    puts "checking against:"+check1.to_s
    check2.each do |check2|
      puts "checking:"+check1.to_s+"|"+check2.to_s
      if check1 == check2
        counter += 1
      end
    end
    if counter &gt; 1
      dupUID &lt;&lt; check1
    end
  end
  </code></pre>
  
  <p>The result:</p>
  
  <pre><code>checking against:0 &lt;- checking the 1st element in check1
  checking:0|0
  checking:0|0
  checking:0|0
  checking:0|1
  checking:0|1
  checking:0|2
  checking:0|3
  checking:0|4
  checking:0|5
  checking:0|100
  checking:0|4294967294
  checking:0|9
  checking:0|11
  checking:0|6
  checking:0|200
  checking:0|7
  checking:0|201
  checking:0|811
  checking:0|202
  checking:0|204
  checking:0|3000
  checking:0|205
  checking:0|3001
  checking:0|3001
  checking:0|3001
  checking against:0&lt;- checking the 2nd element in check1
  checking:0|3001   &lt;- nested loop2(check2) is not looping again on the 2nd element of loop 1
  checking against:0
  checking:0|3001   &lt;- loop2 stops at the last element for the remaining elements in check1
  checking against:1
  checking:1|3001
  checking against:1
  checking:1|3001
  checking against:2
  checking:2|3001
  checking against:3
  checking:3|3001
  checking against:4
  checking:4|3001
  checking against:5
  checking:5|3001
  checking against:100
  checking:100|3001
  checking against:4294967294
  checking:4294967294|3001
  checking against:9
  checking:9|3001
  checking against:11
  checking:11|3001
  checking against:6
  checking:6|3001
  checking against:200
  checking:200|3001
  checking against:7
  checking:7|3001
  checking against:201
  checking:201|3001
  checking against:811
  checking:811|3001
  checking against:202
  checking:202|3001
  checking against:204
  checking:204|3001
  checking against:3000
  checking:3000|3001
  checking against:205
  checking:205|3001
  checking against:3001
  checking:3001|3001
  checking against:3001
  checking:3001|3001
  checking against:3001
  checking:3001|3001
  </code></pre>
  
  <p>Can anyone point out my mistake? Thanks a lot.
  Solved: Thanks to all!</p>
  
  <pre><code>check1.each do |ch1|
    counter=0
    check2.each do |ch2|
      if ch1 == ch2
        counter += 1
      end
    end
    if counter &gt; 1
      dupUID &lt;&lt; ch1
    end
  end
  
  puts dupUID
  </code></pre>