Php 按相同的键和值对数组进行分组,并使用它创建json数据

Php 按相同的键和值对数组进行分组,并使用它创建json数据,php,arrays,json,Php,Arrays,Json,我需要按相同的键和值对数组进行分组,并使用分组后的数组创建json数据 例如:我需要把它显示为 Array ( [0] => Array ( [religion] => Christian [emp_count] => 4 [b_name] => tripura [branch_id] => 7 ) [1] => Array ( [religion] =&

我需要按相同的键和值对数组进行分组,并使用分组后的数组创建json数据

例如:我需要把它显示为

Array
(
[0] => Array
    (
        [religion] => Christian
        [emp_count] => 4
        [b_name] => tripura
        [branch_id] => 7
    )

[1] => Array
    (
        [religion] => Christian
        [emp_count] => 2
        [b_name] => Tirunelveli
        [branch_id] => 10
    )

[2] => Array
    (
        [religion] => Christian
        [emp_count] => 4
        [b_name] => Madurai
        [branch_id] => 12
    )

[3] => Array
    (
        [religion] => Hindu
        [emp_count] => 3
        [b_name] => tripura
        [branch_id] => 7
    )

[4] => Array
    (
        [religion] => Hindu
        [emp_count] => 4
        [b_name] => Tirunelveli
        [branch_id] => 10
    )

[5] => Array
    (
        [religion] => 
        [emp_count] => 0
        [b_name] => 
        [branch_id] => 
    )

[6] => Array
    (
        [religion] => 
        [emp_count] => 0
        [b_name] => 
        [branch_id] => 
    )

[7] => Array
    (
        [religion] => Muslim
        [emp_count] => 1
        [b_name] => Tirunelveli
        [branch_id] => 10
    )

[8] => Array
    (
        [religion] => 
        [emp_count] => 0
        [b_name] => 
        [branch_id] => 
    )

)
试试看

  • 创建自己的数组
  • 在当前数组中循环(
    $arrArray
  • 通过将元素添加到
    $arrgroubled
代码
$arrgroubled=array();
外汇($Arraray作为$Arralement){
如果(数组\键\存在($arrElement['religation'],$arrrogroubled)){
$arrrelement[$arrelelement['religation']]+=$arrelelement['emp_count'];
}否则{
$arrrelement[$arrelelement['religation']=$arrelelement['emp_count'];
}
}
回显“”。json_encode($arr,true)。“”;

我将分两步完成此操作:

  • 将同一宗教分组并收集计数
  • 将结果映射到最终的数据数组中
  • 因此:


    请参阅:

    创建循环并创建自己的数据数组。但是为什么你不只用
    json\u encode
    数据:[4,2,4]
    这是从哪里来的数据源?他需要按宗教分组的数组,带有emp\u count数组可能重复的
    {
    name : 'Christian',
    data :[4,2,4]
    },
    {name:'Hindu',
    data:[3,2,1]
    } ....
    
    $arrGrouped = array();
    foreach($arrArray as $arrElement) {
         if( array_key_exists($arrElement['religion'], $arrGrouped) ) {
            $arrGrouped[$arrElement['religion']] += $arrElement['emp_count'];
         } else {
            $arrGrouped[$arrElement['religion']] = $arrElement['emp_count'];
         }
    }
    
    echo '<pre>'. json_encode($arrGrouped, true) .'</pre>';
    
    $result = array_reduce($array, function(&$result, $current) {
        $result[$current['religion']][] = $current['emp_count'];
        return $result;
    }, []);
    
    $data = [];
    foreach ($result as $religion => $emp_counts) {
        $data[] = [
            'name' => $religion,
            'data' => $emp_counts,
        ];
    }
    
    echo json_encode($data);