在Codeigniter中使用PHP将数组转换为JSON

在Codeigniter中使用PHP将数组转换为JSON,php,arrays,json,codeigniter,parsing,Php,Arrays,Json,Codeigniter,Parsing,我有一个如下所示的数组: Array ( [0] => Array ( [SI] => 1 [name] => Nick [location] => Russia [year] => 2011 ) [1] => Array ( [SI] => 8

我有一个如下所示的数组:

 Array ( [0] => Array ( [SI] => 1 
                        [name] => Nick 
                        [location] => Russia
                        [year] => 2011 ) 
        [1] => Array ( [SI] => 8 
                       [name] => Mike 
                       [location] => Russia 
                       [year] => 2011 )
        [2] => Array ( [SI] => 2 
                       [name] => Tom 
                       [location] => Russia 
                       [year] => 2010 )
        [3] => Array ( [SI] => 6 
                       [name] => Duke 
                       [location] => Russia 
                       [year] => 2010 ) )     
当前JSON格式:

 {
"name": "Amalians",
"img": "https:\/\/dl.dropboxusercontent.com\/u\/19954023\/marvel_force_chart_img\/marvel.png",
"children": [
    {
        "name": "2011"
    },
    {
        "children": [
            {
                "SI": "1"
            }
        ]
    },
    {
        "children": [
            {
                "name": "Nick"
            }
        ]
    },
    {
        "children": [
            {
                "location": "Russia"
            }
        ]
    },
    {
        "name": "2011"
    },
    {
        "children": [
            {
                "SI": "8"
            }
        ]
    },
    {
        "children": [
            {
                "name": "Mike"
            }
        ]
    },
    {
        "children": [
            {
                "location": "Russia"
            }
        ]
    },
    {
        "name": "2010"
    },
    {
        "children": [
            {
                "SI": "2"
            }
        ]
    },
    {
        "children": [
            {
                "name": "Tom"
            }
        ]
    },
    {
        "children": [
            {
                "location": "Russia"
            }
        ]
    },
    {
        "name": "2010"
    },
    {
        "children": [
            {
                "SI": "6"
            }
        ]
    },
    {
        "children": [
            {
                "name": "Duke"
            }
        ]
    },
    {
        "children": [
            {
                "location": "Russia"
            }
        ]
    }
  ]
}
所需的JSON格式:

 {
   "name": "marvel",
   "img": "https://dl.dropboxusercontent.com/u/19954023/marvel_force_chart_img/marvel.png",
   "children": [
    {
       "name": "2011",
       "children": [
        {
           "SI": "1",
           "name": "Nick", 
           "location": "Russia"
        },
        {
           "SI": "8",
           "name": "Mike", 
           "location": "Russia"
        }
       ]
     },
     {
       "name": "2010",
       "children": [
        {
           "SI": "2",
           "name": "Tom", 
           "location": "Russia"
        },
        {
           "SI": "6",
           "name": "Duke", 
           "location": "Russia"
        }
       ]
      }
    ]
 }    
代码:

    $data['name'] = "Amalians";
    $data['img'] = "https://dl.dropboxusercontent.com/u/19954023/marvel_force_chart_img/marvel.png";

    foreach($people as $row)
    {

            $data['children'][]['name'] = $row['year'];
            $data['children'][]['children'][]['SI'] = $row['SI'];
            $data['children'][]['children'][]['name'] = $row['name'];
            $data['children'][]['children'][]['location'] = $row['location'];
    }
    echo "<pre>";
    echo json_encode($data,JSON_PRETTY_PRINT);
    echo "</pre>"; exit();     
$data['name']=“Amalians”;
$data['img']=”https://dl.dropboxusercontent.com/u/19954023/marvel_force_chart_img/marvel.png";
foreach($行中的人员)
{
$data['children']['name']=$row['year'];
$data['children']['children']['SI']=$row['SI'];
$data['children']['children']['name']=$row['name'];
$data['children']['children']['location']=$row['location'];
}
回声“;
echo json_encode($data,json_PRETTY_PRINT);
回声“;退出();
注意:
$people
是上面定义的数组。
请帮我做这件事。过去两天我一直在做这个,直到现在我还没有找到任何解决办法。谢谢你可以试试这个:

在这里,您需要按键
年份
对数组进行分组

$arrData = [
    [
        "SI" => 1,
        "name" => "Nick",
        "location" => "Russia",
        "year" => 2011
    ],
    [
        "SI" => 2,
        "name" => "Mike",
        "location" => "Russia",
        "year" => 2011
    ],
    [
        "SI" => 3,
        "name" => "Tom",
        "location" => "Russia",
        "year" => 2010
    ],
    [
        "SI" => 4,
        "name" => "Duke",
        "location" => "Russia",
        "year" => 2010
    ],
];

$arrGroupedData = [];


foreach($arrData AS $row)
{
    $arrGroupedData[$row['year']][] = [ "SI" => $row['SI'],  "name" => $row['name'], "location" => $row['location']];

}

$arrGroupFormattedData = [];

foreach($arrGroupedData AS $key => $arrGroup)
{
    $arrGroupFormattedData[] = ["name" => $key, "children" => $arrGroup];
}

$data = [
    "name" => "Amalians",
    "img" => "https://dl.dropboxusercontent.com/u/19954023/marvel_force_chart_img/marvel.png",
    "children" => $arrGroupFormattedData
];

echo json_encode($data,JSON_PRETTY_PRINT);
$array=array();
foreach($val形式的人员){
$array[$val['year'][]=$val;
}
$data['name']=“Amalians”;
$data['img']=”https://dl.dropboxusercontent.com/u/19954023/marvel_force_chart_img/marvel.png";
$i=0;
foreach($key=>$value的数组){
foreach($key2=>$value2的值){
$data['children'][$i]['name']=$value2['year'];
$data['children'][$i]['children'][$key2]['SI']=$value2['SI'];
$data['children'][$i]['children'][$key2]['name']=$value2['name'];
$data['children'][$i]['children'][$key2]['location']=$value2['location'];
}
$i++;
}
回声“;
echo json_encode($data,json_PRETTY_PRINT);
回声“;
退出();

我想最简单的方法是将数据分组


Wow。。。太完美了。你成就了我的一天:)(Y)
$arrData = [
    [
        "SI" => 1,
        "name" => "Nick",
        "location" => "Russia",
        "year" => 2011
    ],
    [
        "SI" => 2,
        "name" => "Mike",
        "location" => "Russia",
        "year" => 2011
    ],
    [
        "SI" => 3,
        "name" => "Tom",
        "location" => "Russia",
        "year" => 2010
    ],
    [
        "SI" => 4,
        "name" => "Duke",
        "location" => "Russia",
        "year" => 2010
    ],
];

$arrGroupedData = [];


foreach($arrData AS $row)
{
    $arrGroupedData[$row['year']][] = [ "SI" => $row['SI'],  "name" => $row['name'], "location" => $row['location']];

}

$arrGroupFormattedData = [];

foreach($arrGroupedData AS $key => $arrGroup)
{
    $arrGroupFormattedData[] = ["name" => $key, "children" => $arrGroup];
}

$data = [
    "name" => "Amalians",
    "img" => "https://dl.dropboxusercontent.com/u/19954023/marvel_force_chart_img/marvel.png",
    "children" => $arrGroupFormattedData
];

echo json_encode($data,JSON_PRETTY_PRINT);
    <?php
    $array =  Array(Array( "SI" => 1, 
                            "name" => Nick, 
                            "location" => Russia,
                            "year" => 2011), 
                    Array ( "SI" => 8, 
                           "name" => Mike ,
                           "location" => Russia ,
                           "year" => 2011),
                    Array ( "SI" => 2, 
                           "name" => Tom, 
                           "location" => Russia, 
                           "year" => 2010 ),
                    Array ( "SI" => 6, 
                           "name" => Duke, 
                           "location" => Russia ,
                           "year" => 2010 ) );
    $json_final['child'] = array();
    $temp = array();
    foreach($array as $arr)
    {
        $flag=0;
        if(!empty($json_final['child']))
        {
            foreach($json_final['child'] as $name_data)
            {
                if($name_data['name'] == $arr['year'])
                {
                    $flag=1;

array_push($name_data['child_sub'],array("SI"=>$arr['SI'],"name"=>$arr['name'],"location"=>$arr['location']));
                    array_push($temp, $name_data);
                }
            }
        }
        if($flag == 0)
        {
            array_push($json_final['child'],array("name"=>$arr['year'],"child_sub"=>array(array("SI"=>$arr['SI'],"name"=>$arr['name'],"location"=>$arr['location']))));
        }   
    }
    $json_final['child'] = $temp;
    //print_r($json_final);
    echo json_encode($json_final,true)

    ?>