我有这个哈希:
hash = {:title=>"blabla", :content=>"blabla", :mark=>40}
在一个循环中,我想用另一对相同的键 => 值对象来递增它。
我想要的在 PHP 中看起来像这样
hash = array(
0 => array(
'title' => 'blabla',
'content' => 'blabla',
'mark' => 50,
),
1 => array(
'title' => 'blabla',
'content' => 'blabla',
'mark' => 50,
)
);
为了拥有它,我会像那样循环
foreach ($elements as $element) {
$hash[] = array('title' => $element['title'],
'content' => $element['blabla'],
'mark' => $element['mark']
);
}
变量名后面的[]
,在 php 中自动递增数组,但它的行为方式似乎与 Ruby 不同。
预期的 Ruby 输出如下:
hash = {
{
'title' => 'blabla',
'content' => 'blabla',
'mark' => 50,
},
{
'title' => 'blabla',
'content' => 'blabla',
'mark' => 50,
}
}
我认为PHP的数组/哈希对偶性让你感到困惑。"带有自动递增键的哈希"只是 ruby 中的一个数组。您可以通过索引(自然是自动递增的)访问其元素。
result = elements.map do |element|
{
'title' => element['title'],
# ...
}
end
result # [{'title' => 'foo'}, {'title' => 'bar'}, ...]
result[0] # {'title' => 'foo'}
我希望下面是您正在寻找的解决方案。
output_hash = {}
elements.each_with_index do |element, index|
item = {}
item[:title] = element['title']
item[:content] = element['content']
item[:mark] = element['mark']
output_hash["#{index}"] = item
end
结果
{"0"=>{:title=>"blabla", :content=>"blabla", :mark=>50},
"1"=>{:title=>"blabla", :content=>"blabla", :mark=>50}}