# Multi-dimentional array

**URL:** <https://www.ruby-forum.com/t/multi-dimentional-array/132886>\
**Category:** Ruby\
**Created:** [March 25, 2008, 3:48pm UTC](https://www.ruby-forum.com/t/multi-dimentional-array/132886 "2008-03-25T15:48:39Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![joan2kus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9fc29f/32.png) [@joan2kus](https://www.ruby-forum.com/u/joan2kus)\
**Post date:** [March 25, 2008, 3:48pm UTC](https://www.ruby-forum.com/t/multi-dimentional-array/132886/1 "2008-03-25T15:48:39Z")

</div>

I need to insert Broad Category value and Topics value into a table,  
doing something like this (where ‘Police, Crime, Drugs’ are topics  
values and ‘Crime & Law Enforcement’ is broad category value):

obj1 = ‘Police, Crime, Drugs’  
obj1 = obj1.split(’,’).map do |tag\_name|  
execute “insert into tags (name,counter) values  
(’#{tag\_name.strip.downcase}’, 0)”  
t = Tag.find\_by\_name(tag\_name.strip.downcase)  
tt = t.tag\_with(‘Crime & Law Enforcement’)  
end

When it comes with multiple broad categories and topics, I want to build  
an array in a form like  
[[‘Police, Crime, Drugs’,‘Crime & Law Enforcement’],[‘Fire, Emergency  
Services’,‘Emergency Management’], [‘Schools, Colleges,  
Libraries’,‘Education’],…]  
to iterate the executions. I worked for quite some hours, but still  
can’t make it work. Can someone help?

Joan

---

<div class="post-metadata">

**Author:** ![joan2kus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9fc29f/32.png) [@joan2kus](https://www.ruby-forum.com/u/joan2kus)\
**Post date:** [March 25, 2008, 4:25pm UTC](https://www.ruby-forum.com/t/multi-dimentional-array/132886/2 "2008-03-25T16:25:25Z")

</div>

Hi –

On Tue, 25 Mar 2008, Joan Gu wrote:

> end
> 
> When it comes with multiple broad categories and topics, I want to build  
> an array in a form like  
> [[‘Police, Crime, Drugs’,‘Crime & Law Enforcement’],[‘Fire, Emergency  
> Services’,‘Emergency Management’], [‘Schools, Colleges,  
> Libraries’,‘Education’],…]  
> to iterate the executions. I worked for quite some hours, but still  
> can’t make it work. Can someone help?

I think you want something like this:

tagsets = [[‘Police, Crime, Drugs’,‘Crime & Law Enforcement’],  
[‘Fire, Emergency Services’,‘Emergency Management’],  
[‘Schools, Colleges, Libraries’,‘Education’]]

tagsets.each do |tagset|  
broad, topic = tagset  
broads = broad.split(",").map {|s| s.strip }  
puts “Broad: #{broads.join(”; “)}\n\tTopic: #{topic}” # etc.  
end

David

---

<div class="post-metadata">

**Author:** ![joan2kus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9fc29f/32.png) [@joan2kus](https://www.ruby-forum.com/u/joan2kus)\
**Post date:** [March 25, 2008, 4:56pm UTC](https://www.ruby-forum.com/t/multi-dimentional-array/132886/3 "2008-03-25T16:56:55Z")

</div>

Joan Gu wrote:

> I need to insert Broad Category value and Topics value into a table,  
> doing something like this (where ‘Police, Crime, Drugs’ are topics  
> values and ‘Crime & Law Enforcement’ is broad category value):

How about using a hash with arrays underneath?

Something like:

category\_hash={}  
cat1 = ‘Crime & Law Enforcement’  
cat2 = ‘Emergency Management’  
obj1 = ‘Police, Crime, Drugs’  
obj2 = ‘Fire, Emergency Services’

category\_hash[cat1]= obj1.split(",").map {|s| s.strip}  
category\_hash[cat2]= obj2.split(",").map {|s| s.strip}

You can then add new items like this:

category\_hash[cat1] \<\< ‘New Crime related item’

puts category\_hash.inspect  
#=\>{“Emergency Management”=\>[“Fire”, “Emergency Services”], “Crime & Law  
Enforcement”=\>[“Police”, “Crime”, “Drugs”, “New Crime related item”]}

and you can then iterate through categories and within each category  
through the items.

Mac

---

<div class="post-metadata">

**Author:** ![joan2kus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9fc29f/32.png) [@joan2kus](https://www.ruby-forum.com/u/joan2kus)\
**Post date:** [March 25, 2008, 5:44pm UTC](https://www.ruby-forum.com/t/multi-dimentional-array/132886/4 "2008-03-25T17:44:26Z")

</div>

Hey David,

It worked perfectly, thanks!

---

<div class="post-metadata">

**Author:** ![joan2kus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9fc29f/32.png) [@joan2kus](https://www.ruby-forum.com/u/joan2kus)\
**Post date:** [March 25, 2008, 5:47pm UTC](https://www.ruby-forum.com/t/multi-dimentional-array/132886/5 "2008-03-25T17:47:28Z")

</div>

To Mac,

Your solution sounds like a good approach, but may not fit in my  
situation, since I am actually writing Rails migration file, which is  
more like a ‘one time deal’. 🙂

Thanks for your help.  
Joan

---

<div class="post-metadata">

**Author:** ![joan2kus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9fc29f/32.png) [@joan2kus](https://www.ruby-forum.com/u/joan2kus)\
**Post date:** [March 25, 2008, 6:25pm UTC](https://www.ruby-forum.com/t/multi-dimentional-array/132886/6 "2008-03-25T18:25:06Z")

</div>

On Tue, Mar 25, 2008 at 9:48 AM, Joan Gu [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> end
> 
> When it comes with multiple broad categories and topics, I want to build  
> an array in a form like  
> [[‘Police, Crime, Drugs’,‘Crime & Law Enforcement’],[‘Fire, Emergency  
> Services’,‘Emergency Management’], [‘Schools, Colleges,  
> Libraries’,‘Education’],…]  
> to iterate the executions. I worked for quite some hours, but still  
> can’t make it work. Can someone help?
> 
> Joan

Can’t help you with migrations, but what’s your relationship model?  
Is it one to one and that’s why you want an array like that? Is it  
one many (which is what I’d suspect)? Is it many to many?

You did say “a” table. Somehow, that doesn’t seem to correctly fit your  
model.

Todd

---

<div class="post-metadata">

**Author:** ![joan2kus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9fc29f/32.png) [@joan2kus](https://www.ruby-forum.com/u/joan2kus)\
**Post date:** [March 28, 2008, 12:45am UTC](https://www.ruby-forum.com/t/multi-dimentional-array/132886/7 "2008-03-28T00:45:28Z")

</div>

> Can’t help you with migrations, but what’s your relationship model?  
> Is it one to one and that’s why you want an array like that? Is it  
> one many (which is what I’d suspect)? Is it many to many?
> 
> You did say “a” table. Somehow, that doesn’t seem to correctly fit your  
> model.
> 
> Todd  
> Seems to me that could even be n-n, since a category like “Police  
> Academy” could fit into two topics. 🙂

Mac
