在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)
?>