簡體   English   中英

Json數據組按團隊名稱與PHP

[英]Json data group by team name with php

我必須在各自的團隊名稱下顯示團隊得分,我有以下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積分

$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>';
}

json_decode()true作為第二個參數使用,它將為您提供一個關聯數組,並將JSON object轉換為PHP object這將使您的生活更輕松。

嘗試這個 :

$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);
}

演示!

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

  }

}

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM