PHP尽管有缺点,但在这方面做得很好。数组和哈希之间没有区别(也许我很天真,但这对我来说显然是正确的),要遍历其中任何一个,你都可以这样做
foreach (array/hash as $key => $value)
在Ruby中,有很多方法可以做到这一点:
array.length.times do |i|
end
array.each
array.each_index
for i in array
哈希更有意义,因为我总是用
hash.each do |key, value|
为什么我不能对数组这样做?如果我只想记住一个方法,我想我可以使用each_index(因为它使索引和值都可用),但是必须使用array[index]而不是value是很烦人的。
哦,对了,我忘了array。each_with_index。然而,这个很糟糕,因为它是|值,键|和哈希。每个键|,值|!这不是很疯狂吗?
我一直在尝试使用散列构建菜单(在Camping和Markaby中)。
每个项目都有两个元素:一个菜单标签和一个URL,所以哈希似乎是正确的,但“Home”的“/”URL总是出现在最后(正如你所期望的哈希),所以菜单项出现的顺序是错误的。
使用带有each_slice的数组来完成这项工作:
['Home', '/', 'Page two', 'two', 'Test', 'test'].each_slice(2) do|label,link|
li {a label, :href => link}
end
为每个菜单项添加额外的值(例如CSS ID名)只是意味着增加切片值。就像一个散列,但是组由任意数量的项组成。完美的。
所以这只是为了感谢你无意中暗示了一个解决方案!
很明显,但值得说明:我建议检查数组的长度是否能被切片值整除。
这将遍历所有元素:
array = [1, 2, 3, 4, 5, 6]
array.each { |x| puts x }
# Output:
1
2
3
4
5
6
这将遍历所有给你值和索引的元素:
array = ["A", "B", "C"]
array.each_with_index {|val, index| puts "#{val} => #{index}" }
# Output:
A => 0
B => 1
C => 2
从你的问题我不太确定你在找哪一个。