如何在Ruby中编写以下数组?
$itemsarray = array();
$itemsarray["items"]['0']['product_id'] = 1;
$itemsarray["items"]['0']['brand_id'] = 1;
$itemsarray["items"]['0']['color_id'] = 1;
$itemsarray["items"]['1']['product_id'] = 2;
$itemsarray["items"]['1']['brand_id'] = 3;
$itemsarray["items"]['1']['color_id'] = 5;
答案 0 :(得分:2)
这很容易。以下是您的需求:
itemsarray = { 'items' => [ { 'product_id' => 1, 'brand_id' => 1, 'color_id' => 1 } ] }
现在做一点解释......
在Ruby中表示关联数组,我们使用 Hashes 。例如:{ 'a' => 1, 'b' => 2 }
== array('a' => 1, 'b' => 2)
。
所以在顶层你有一个包含键items
的哈希值,它的值是所有项目的数组。第一项是哈希,将产品选项作为键及其对应的值。
更好的方法是使用符号而不是字符串作为键,因为这会引入一些内存优化。这是一个例子:
itemsarray = { :items => [ { :product_id => 1, :brand_id => 1, :color_id => 1 } ] }
还有一种简写语法:abc => 1
相当于:abc: 1
,所以上面的行看起来像:
itemsarray = { items: [ { product_id: 1, brand_id: 1, color_id: 1 } ] }
<强>更新强>
有多个项目,它的外观如下:
itemsarray = { items: [
{ product_id: 1, brand_id: 1, color_id: 1 },
{ product_id: 2, brand_id: 3, color_id: 5 }
]}
或动态方法:
itemsarray[:items].push( { product_id: 2, brand_id: 3, color_id: 5 } )
答案 1 :(得分:0)
itemsarray={ items:[{product_id:1, brand_id:1, color_id:1} ]}