Json数据组按团队名称与php

时间:2015-12-05 18:10:04

标签: php json

我必须在各自的团队名下显示团队积分 我有以下json数据

{
"id":319231,
"innings":[
	{"id":967766},
	{"id":967767},
	{"id":967768},
	{"id":967769}
],
"team1":{
	"team":{"name":"Minor Counties","id":115104,"club":{"name":"Minor Counties","id":98110}},
	"innings":[
		{"id":967766,"points":253,"wickets":10,"overs":86,"balls":4},
		{"id":967768,"points":190,"wickets":5,"overs":61,"balls":0}
	]
},
"team2":{
	"team":{"name":"Major Counties","id":93648,"club":{"name":"Major Counties","id":35487}},
	"innings":[
		{"id":967767,"points":229,"wickets":10,"overs":67,"balls":4},
		{"id":967769,"points":64,"wickets":4,"overs":23,"balls":2}
	]
},
}

现在我想要结果如下:

Minor Counties             Major Counties
253/10 &  190/5            229/10 & 64/4

目前我的结果如下:

Minor Counties       Minor Counties    Major Counties   Major Counties
  253/10                190/5            229/10             64/4

到目前为止,这是我的PHP代码:

$team1 = $read_json->team->team1->name;
$team2 = $read_json->team->team2->name;
foreach($read_json->team1->innings as $team1Innings){
				$points = $team1Innings->points;
				$wickets = $team1Innings->wickets;
				$overs = $team1Innings->overs;
				$balls = $team1Innings->balls;				
                echo "<div class=\"score-total\"><span class=\"score-team\">$team1</span>$points/$wickets<span class=\"score-overs\">$overs.$balls overs</span></div>";
			}	
			
获得team2积分的类似代码

3 个答案:

答案 0 :(得分:1)

$json = '{
   "id":319231,
   "innings":[
      {
         "id":967766
      },
      {
         "id":967767
      },
      {
         "id":967768
      },
      {
         "id":967769
      }
   ],
   "team1":{
      "team":{
         "name":"Minor Counties",
         "id":115104,
         "club":{
            "name":"Minor Counties",
            "id":98110
         }
      },
      "innings":[
         {
            "id":967766,
            "points":253,
            "wickets":10,
            "overs":86,
            "balls":4
         },
         {
            "id":967768,
            "points":190,
            "wickets":5,
            "overs":61,
            "balls":0
         }
      ]
   },
   "team2":{
      "team":{
         "name":"Major Counties",
         "id":93648,
         "club":{
            "name":"Major Counties",
            "id":35487
         }
      },
      "innings":[
         {
            "id":967767,
            "points":229,
            "wickets":10,
            "overs":67,
            "balls":4
         },
         {
            "id":967769,
            "points":64,
            "wickets":4,
            "overs":23,
            "balls":2
         }
      ]
   }
}';

$items = json_decode($json);
unset($items->id);
unset($items->innings);
foreach ($items as $item) {
    echo "<b>{$item->team->name}</b>";
    $innings = [];
    foreach ($item->innings as $inning) {
        $innings[] = "{$inning->points} / {$inning->wickets}";
    }
    echo '<br>';
    echo implode(' & ', $innings);
    echo '<br>';
}

答案 1 :(得分:1)

json_decode()true一起用作第二个参数,它会为您提供一个关联数组,它会将JSON object转换为PHP object。这会让您的生活更轻松。< / p>

试试这个:

$jsonObj = json_decode($json,true);
$inningsPoint = [];
foreach ($jsonObj as $teamData) {
    if(!empty($teamData[team][name])) {
       echo $teamData[team][name].'<br>';
       $inningsPoint = []; 
    }
    foreach ($teamData[innings] as $inningsData) {
       $inningsPoint[] = "$inningsData[points] / $inningsData[wickets]"; 
    }
    echo implode(' & ', $inningsPoint);
}

Demo!

答案 2 :(得分:-2)

<?php

function showteams_results($k1,$points){

switch ($k1) {
  case 'team1':
 foreach ($points as $key => $value) {
   if($key=="team1")
   {
    echo ucfirst($key)."<br>";
       foreach ($value as $k => $v) {
        echo "Innings".$v."<br>";
       }
   }
 }
    break;
  case 'team2':
 foreach ($points as $key => $value) {
   if($key=="team2")
   {
    echo ucfirst($key)."<br>";
       foreach ($value as $k => $v) {
        echo "Innings".$v."<br>";
       }
   }
 }
    break;

  default:
    echo "Team no points!";
    break;
}

}

$points=array();

$jsonObj = json_decode($json,true);
$inningsPoint = [];
  foreach ($jsonObj as $k1 => $teamData) {
//extracting points of team1---------->
   if($k1=="team1"){

  //showteams_results($k,$jsonObj);
    foreach ($teamData as $k => $v) {
       if($k=="innings")
       {
         foreach ($v as $k => $vf) {
            foreach ($vf as $k => $vk) {
              if($k=="points")
               $points["team1"][]=$vk;
            }
         }
       }
    }
//sending data teams 
showteams_results($k1,$points);
  }
//extracting points of team2---------->
   if($k1=="team2"){
  //showteams_results($k,$jsonObj);
    foreach ($teamData as $k => $v) {
       if($k=="innings")
       {
         foreach ($v as $k => $vf) {
            foreach ($vf as $k => $vk) {
              if($k=="points")
               $points["team2"][]=$vk;
            }
         }
       }
    }

//sending data teams 
showteams_results($k1,$points);

  }

}

?>