2016-11-26 234 views
0

下面我有数组创建新的JSON,与价值观的总和阵列

Array ([0] => Array ([user_name] => Jack1 [amount] => 100.00 [category_name] => Trial1) [1] => Array ([user_name] => Jack1 [amount] => 150.00 [category_name] => Trial2) [2] => Array ([user_name] => Jack1 [amount] => 200.00 [category_name] => Trial1) [3] => Array ([user_name] => Jack2 [amount] => 200.00 [category_name] => Trial2) [4] => Array ([user_name] => Jack2 [amount] => 200.00 [category_name] => Trial1) [5] => Array ([user_name] => Jack2 [amount] => 200.00 [category_name] => Trial2) 

什么,我想送有JSON具有以下格式

它会得到一些平等类别名称,然后发送它作为json。

[{'user_name': Jack1, 'trial1':"300", 'trial2':150"" }, {'user_name': Jack2, 'trial1':"200", 'trial2':400"" }] 

综上所述,我想用户名是唯一的,然后把所有种类与名称和每个类别的用户的总和,

下面试过,

$new_array = array(); 

     foreach ($expense_array['x'] as $a) 
     { 
      if (!isset($new_array[$a['user_name']]['amount'])) 
      { 
       $new_array[$a['user_name']]['amount'] = 0; 
      } 

      $new_array[$a['user_name']] = array(
        'user_name' => $a['user_name'], 
        'category_name' => $a['category_name'], 
        'amount' => $new_array[$a['user_name']]['amount'] + $a['amount']); 

     } 
echo json_encode(array_values($new_array)); 

这只输出trai1类别,而不是按要求JSON

我该如何做到这一点? 想要获得foreach循环,然后比较category_name并使用。= +来获得总和?但我失去了那里,

感谢,

+0

请格式化这个 。并把一些有效的json数据 – Mahi

+0

你从数据库中获取这些数据吗? – peterm

+0

@peterm,是的我从数据库中获取数组输出,并且想要创建PHP循环来输出JSON – rjcode

回答

1

如果你传递数组到这个函数会返回所需的JSON字符串:

function create_json($data) 
{ 
    $output = []; 

    foreach ($data as $stats) 
    { 
     $key  = $stats['user_name']; 
     $category = strtolower($stats['category_name']); 
     $amount = $stats['amount']; 

     if (isset($output[$key])) 
     { 
      if (isset($output[$key][$category])) 
      { 
       $output[$key][$category] += $amount; 
      } 
      else 
      { 
       $output[$key][$category] = $amount; 
      } 
     } 
     else 
     { 
      $output[$key] = [ 
       'user_name' => $key, 
       $category => $amount, 
      ]; 
     } 
    } 

    return json_encode(array_values($output)); 
} 

输出:

[ 
{"user_name":"Jack1","trial1":300,"trial2":150}, 
{"user_name":"Jack2","trial2":400,"trial1":200} 
] 
+0

几乎在那里,但我怎样才能得到Jack1,2的所有类别金额的总和? – rjcode

+0

@rjcode,所以你想它输出每个类别的总和和所有类别的总和?如果是这样,那么改变你的例子JSON来反映这一点,我会让它匹配。 – Sane

+0

已更新JSON输出 – rjcode