Сортировка JSON по ключу, который находится на втором уровне

#php #sorting #cakephp #json

#php #сортировка #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.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 /> } , {";
         }
        }
}
    }
 

Я хочу отсортировать свои данные по времени завершения, но последними данными должны быть Time.Now 10 минут. Мой элемент сортировки находится внутри второго уровня. Есть ли какой-нибудь способ отсортировать по времени завершения и получить 3 лучших результата?

Комментарии:

1. Эхххх… почему вы пытаетесь создать json вместо использования встроенных функций php, таких как json_encode() ?

2. Я использовал json_encode для чтения json и $json_a= json_decode ($json.true) я хочу отсортировать по результату и получить первые три данные

3. Ну, это результат, и я хочу отправить его в виде ответа json, пока эта часть в порядке, я хочу отсортировать данные по времени завершения, а последнее время завершения должно быть больше, чем дата.сейчас 10 минут

4. Или просто отсортировать json по времени завершения??

5. Но даже после сортировки я все еще не понимаю, почему вы пытаетесь создать Json самостоятельно. Что происходит, когда $teamName это » Кровь, пот и пиво «?