我想这样做a.each_with_object有index,在比这更好的办法:
a = %w[a b c]
a.each.with_index.each_with_object({}) { |arr, hash|
v,i = arr
puts "i is: #{i}, v is #{v}"
}
i is: 0, v is a
i is: 1, v is b
i is: 2, v is c
=> {}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点没有v,i = arr?
阅读了这篇SO post 后,在 PHP 中,我知道您可以通过以下方式index进行迭代array_map:
array_map(function($item, $index) { ... }, $items, array_keys($items));
Run Code Online (Sandbox Code Playgroud)
使用时如何获得$index可用的资源array_reduce?我试过了:
array_reduce($items, array_keys($items), function($acc, $item, $index) { ... }, array());
array_reduce($items, function($acc, $item, $index) { ... }, array(), array_keys($items));
Run Code Online (Sandbox Code Playgroud)
但我似乎仍不能得到$index在array_reduce。有没有人成功地做到过这一点?
编辑
这里有一些关于我为什么问这个问题的背景。
我不想使用,foreach因为我必须改变外部的数组foreach才能创建我的集合。我宁愿避免突变。
其他语言允许人们reduce像在JavaScript和Ruby 中一样使用和访问当前索引。我希望在 PHP 中获得相同的功能。那好吧!看起来我将不得不使用 aforeach来创建我的数组,同时还要在迭代下使用当前索引。