将数组转换为JSON - PHP

时间:2012-08-17 19:05:59

标签: php arrays json

我将从这样的数据库中获得结果。

 array(
         [0] => array( 
                       [type]   => orange,
                       [number] => 10,
                       [size]   => 10c,
                       [weight] => 1l
                     ) 
         [1] => array( 
                       [type]   => mango,
                       [number] => 10,
                       [size]   => 10c,
                       [weight] => 1l
                     ) 
         [1] => array( 
                       [type]   => apple,
                       [number] => 10,
                       [size]   => 10c,
                       [weight] => 1l
                     ) 
         [3] => array( 
                       [type]   => mango,
                       [number] => 10,
                       [size]   => 10c,
                       [weight] => 1l
                     ) 

     )

基本上,我需要将其转换为以下JSON格式:

         "mango" : [{ 
                       "number" : "10",
                       "size"   : "10c",
                       "weight" : "1l"
                     },
                     { 
                       "number" : "12",
                       "size"   : "14c",
                       "weight" : "12"
                     }
                   ],
         "orange" : [{ 
                       "number" : "12",
                       "size"   : "10c",
                       "weight" : "1l"
                     },
                     { 
                       "number" : "12",
                       "size"   : "14c",
                       "weight" : "11"
                     }
                   ],
         "apple" : [{ 
                       "number" : "10",
                       "size"   : "10c",
                       "weight" : "1l"
                     },
                     { 
                   ]

忽略数量,大小和重量。那些只是随机数。 但是数组中的第一个元素包含JSON标记。这应该从数组中删除,但作为JSON中对象数组的标记(你可以看到)。

我知道我们可以使用循环,条件等进行编写。使用现有的内置php函数以及更少的循环和条件,是否有一种智能且快速的方法来执行此操作?

我想,这些是以下步骤:

  1. 根据类型过滤数组个性。可能,这里有3次获得3个成果。哪个功能对此有帮助?根据值过滤。或理想的键值对。
  2. 你得到3个阵列,每个阵列用于一种水果。分别弹出所有数组中的type元素。
  3. 遍历类型,并将数组放在每种类型中,类型值为索引。
  4. 还有其他更好的方法吗?

2 个答案:

答案 0 :(得分:5)

将旧数组重组为新数组:

$new = array();
foreach($old as $vec){
    $new[$vec['type']] = array(
        'number' => $vec['number'],
        'size' => $vec['size'],
        'weight' => $vec['weight']      
    );
}
echo json_encode($new);

答案 1 :(得分:0)

首先根据需要更改数组结构,然后使用json_encode()