我有这个哈希:
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,
}
}
答案 0 :(得分:1)
我认为PHP的数组/哈希二元性会让你感到困惑。 “带自动递增键的哈希”只是ruby中的一个数组。您可以通过索引访问其元素(自然会自动递增)。
result = elements.map do |element|
{
'title' => element['title'],
# ...
}
end
result # [{'title' => 'foo'}, {'title' => 'bar'}, ...]
result[0] # {'title' => 'foo'}
答案 1 :(得分:0)
我希望以下是您正在寻找的解决方案。
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}}