Php JSON按第二级的键排序
嗨,有没有办法在解析之前对JSON进行排序?我想按过期时间分类。这是我的JSONPhp JSON按第二级的键排序,php,sorting,cakephp,json,Php,Sorting,Cakephp,Json,嗨,有没有办法在解析之前对JSON进行排序?我想按过期时间分类。这是我的JSON { "State of Origin 2014":{ "1471137":{ "EventID":1471137, "ParentEventID":1471074, "MainEvent":"State Of Origin Series 2014", "OutcomeDateTime":"2014-06-18 20:10:00
{
"State of Origin 2014":{
"1471137":{
"EventID":1471137,
"ParentEventID":1471074,
"MainEvent":"State Of Origin Series 2014",
"OutcomeDateTime":"2014-06-18 20:10:00.0000000",
"Competition":"State of Origin 2014",
"Competitors":{
"ActiveCompetitors":3,
"Competitors":[
{
"Team":"New South Wales (2 - 1)",
"Win":"2.15"
},
{
"Team":"New South Wales (3 - 0)",
"Win":"3.05"
},
{
"Team":"Queensland (2 - 1)",
"Win":"3.30"
}
],
"TotalCompetitors":3,
"HasWinOdds":true
},
"EventStatus":"Open",
"IsSuspended":false,
"AllowBets":true
},
"1471074":{
"EventID":1471074,
"ParentEventID":0,
"MainEvent":"State Of Origin Series 2014",
"OutcomeDateTime":"2014-07-09 20:10:00.0000000",
"Competition":"State of Origin 2014",
"Competitors":{
"ActiveCompetitors":2,
"Competitors":[
{
"Team":"New South Wales",
"Win":"1.33"
},
{
"Team":"Queensland",
"Win":"3.30"
}
],
"TotalCompetitors":2,
"HasWinOdds":true
},
"EventStatus":"Open",
"IsSuspended":false,
"AllowBets":true
}
},
"State of Origin 2014 Game 2":{
"3608662":{
"EventID":3608662,
"ParentEventID":3269132,
"MainEvent":"New South Wales v Queensland",
"Competitors":{
"ActiveCompetitors":39,
"Competitors":[
{
"TeamName":"New South Wales 6-10",
"Win":"4.70"
},
{
"TeamName":"Queensland 91+",
"Win":"201.00"
}
],
"TotalCompetitors":39,
"HasWinOdds":true
},
"EventStatus":"Open",
"IsSuspended":false,
"AllowBets":true
}
}
}
这是我的密码
foreach ($json_a as $root_element => $childnode) {
echo("{<br />");
foreach( $childnode as $cKey => $subChild) {
if($subChild['ParentEventID']=='0')
{
echo("Australian Rules : [");
echo("<br />");
echo("{<br />");
echo "MainEvent: ".$subChild['MainEvent'];
echo "<br />OutcomeDateTime: ".$subChild['OutcomeDateTime'];
echo "<br />Competitors:[ <br />{";
if (is_array($subChild['Competitors']['Competitors']) and count ($subChild['Competitors']['Competitors']) == 2 ) {
foreach($subChild['Competitors']['Competitors'] as $compKey => $compVal) {
// Since your array contains Team and TeamName , I use array_key_exists to check whick key to use
$teamName = array_key_exists('Team',$compVal) ? $compVal['Team'] : $compVal['Name'];
$win = $compVal['Win'];
echo "<br />Team: ".$teamName;
echo "<br />Win: ".$win;
echo "<br /> } , {";
}
}
}
}
foreach($json\u作为$root\u元素=>$childnode){
回声(“{
”);
foreach($childnode作为$cKey=>$subChild){
如果($subChild['ParentEventID']=='0')
{
echo(“澳大利亚规则:[”);
回声(
);
回声(“{
”);
echo“MainEvent:.$subChild['MainEvent'];
echo“
OutcomeDateTime:“.$subChild['OutcomeDateTime'”;
回声“
竞争对手:[
{”;
如果(是数组($subChild['Competitors']['Competitors'])和计数($subChild['Competitors']['Competitors'])==2){
foreach($compKey=>$compVal的子孩子['Competitors']['Competitors']{
//由于您的数组包含Team和TeamName,所以我使用array\u key\u exists来检查要使用的whick key
$teamName=array_key_存在('Team',$compVal)?$compVal['Team']:$compVal['Name'];
$win=$compVal['win'];
echo“
团队:.$teamName;
回声“
赢:.$Win;
回声“
,{”;
}
}
}
}
我想按OutcomeDateTime对数据进行排序,但最新数据应该是Time。现在+10分钟。我的排序元素在第二级。有没有办法按OutcomeDateTime排序并获得前三名的结果?ehhh…为什么要尝试使用json而不是使用内置php函数,如
json\u encode()
?我使用json_encode读取json和$json_a=json_decode($json.true)我想按outcomedate排序并获得前三个dataWell这是输出,我想将其作为json响应发送,而这一部分很好,我想按outcomedatetime排序数据,最新的outcomedatetime应该大于datatime。现在+10分钟,或者简单地按outcomedatetime排序json??但即使在排序之后,我仍然不知道明白为什么要自己构建Json。当$teamName
为“”时会发生什么?