2015-10-01 4 views
1

Я следующий массив в PHPсоздание JSON массив из PHP массива

Array 
(
    [0] => Array 
     (
      [team1_score] => 10 
      [team2_score] => 5 
      [round_number] => 1 
      [teamtitle1] => Chennai super kings 
      [teamtitle2] => Spartans 
     ) 

    [1] => Array 
     (
      [team1_score] => 15 
      [team2_score] => 10 
      [round_number] => 1 
      [teamtitle1] => Lions11 
      [teamtitle2] => Kings Xl Punjab 
     ) 

    [2] => Array 
     (
      [team1_score] => 15 
      [team2_score] => 5 
      [round_number] => 1 
      [teamtitle1] => Zimbabwe 
      [teamtitle2] => Red Steel 
     ) 

    [3] => Array 
     (
      [team1_score] => 10 
      [team2_score] => 15 
      [round_number] => 2 
      [teamtitle1] => Zimbabwe 
      [teamtitle2] => Chennai super kings 
     ) 

    [4] => Array 
     (
      [team1_score] => 
      [team2_score] => 
      [round_number] => 3 
      [teamtitle1] => 
      [teamtitle2] => 
     ) 
) 

Я хочу, чтобы генерировать турнир скобки из этого массива. Я нашел jquery плагин для создания турнирных скобок. Для создания скобок турнира я должен сформировать массив json вокруг мудрых. для первого раунда он должен дать мне 3 записи для раунда 2 1 записи и для раунда 3 1 запись. Я попытался следующий код: -

<script type="text/javascript"> 
      (function (win, doc, $) { 
       win.TestData<?php echo $cnt; ?> = [ 
<?php 
foreach ($roundmatcharr as $mt => $matchval) { 
    if (isset($matchval["teamtitle1"]) && $matchval["teamtitle1"] != "") { 
     $team1 = $matchval["teamtitle1"]; 
    } else { 
     $team1 = "Team 1"; 
    } 

    if (isset($matchval["teamtitle2"]) && $matchval["teamtitle2"] != "") { 
     $team2 = $matchval["teamtitle2"]; 
    } else { 
     $team2 = "Team 2"; 
    } 

    if (isset($matchval["team1_score"]) && $matchval["team1_score"] != "") { 
     $team1score = $matchval["team1_score"]; 
    } else { 
     $team1score = 0; 
     ; 
    } 

    if (isset($matchval["team2_score"]) && $matchval["team2_score"] != "") { 
     $team2score = $matchval["team2_score"]; 
    } else { 
     $team2score = 0; 
     ; 
    } 
    ?> 
         [ 
           [{"name": "<?php echo $team1; ?>", "id": "<?php echo $team1; ?>", "seed": 1, "score": "<?php echo $team1score; ?>"}, {"name": "<?php echo $team2; ?>", "id": "<?php echo $team2; ?>", "seed": 2, "score": "<?php echo $team2score; ?>"}], 
         ], 
<?php } ?> 
       ]; 
       $(".my_gracket").gracket({src: win.TestData<?php echo $cnt; ?>}); 
      })(window, document, jQuery); 
</script> 

Это дает мне такой вывод: -

win.TestData = [ 
[ 
[ {"name" : "Chennai super kings", "id" : "Chennai super kings", "seed" : 1, "score" : "10" }, {"name" : "Spartans", "id" : "Spartans", "seed" : 2, "score" : "5"} ], 
], 
[ 
[ {"name" : "Lions11", "id" : "Lions11", "seed" : 1, "score" : "15" }, {"name" : "Kings Xl Punjab", "id" : "Kings Xl Punjab", "seed" : 2, "score" : "10"} ], 
], 
[ 
[ {"name" : "Zimbabwe", "id" : "Zimbabwe", "seed" : 1, "score" : "15" }, {"name" : "Red Steel", "id" : "Red Steel", "seed" : 2, "score" : "5"} ], 
], 
[ 
[ {"name" : "Zimbabwe", "id" : "Zimbabwe", "seed" : 1, "score" : "10" }, {"name" : "Chennai super kings", "id" : "Chennai super kings", "seed" : 2, "score" : "15"} ], 
], 
[ 
[ {"name" : "Team 1", "id" : "Team 1", "seed" : 1, "score" : "0" }, {"name" : "Team 2", "id" : "Team 2", "seed" : 2, "score" : "0"} ], 
], 
]; 
which is not correct. The output should be like this:- 

win.TestData = [ 
[ 
[ {"name" : "Chennai super kings", "id" : "Chennai super kings", "seed" : 1, "score" : "10" }, {"name" : "Spartans", "id" : "Spartans", "seed" : 2, "score" : "5"} ], 
[ {"name" : "Lions11", "id" : "Lions11", "seed" : 1, "score" : "15" }, {"name" : "Kings Xl Punjab", "id" : "Kings Xl Punjab", "seed" : 2, "score" : "10"} ], 
[ {"name" : "Zimbabwe", "id" : "Zimbabwe", "seed" : 1, "score" : "15" }, {"name" : "Red Steel", "id" : "Red Steel", "seed" : 2, "score" : "5"} ], 
], 
[ 
[ {"name" : "Zimbabwe", "id" : "Zimbabwe", "seed" : 1, "score" : "10" }, {"name" : "Chennai super kings", "id" : "Chennai super kings", "seed" : 2, "score" : "15"} ], 
], 
[ 
[ {"name" : "Team 1", "id" : "Team 1", "seed" : 1, "score" : "0" }, {"name" : "Team 2", "id" : "Team 2", "seed" : 2, "score" : "0"} ], 
], 
]; 

Round 1 матчи должны быть в первом массиве затем второй и так далее.

+0

И что здесь проблема –

+0

json array не подходит к концу. он подходит для всех записей –

+0

Что вы имеете в виду, округляя –

ответ

0

Один подход заключается в том, что сначала вы создаете данные в правильной структуре на PHP, что упрощает управление. Затем вы можете вывести его как JSON, используя json_encode.

<?php 
$rounds = []; 
$output = []; 

// Format data and sort by round 
foreach ($roundmatcharr as $matchval) { 

    $match1 = new stdClass(); 
    $match1->name = $matchval['teamtitle1']; 
    $match1->id = $matchval['teamtitle1']; 
    $match1->seed = 1; 
    $match1->score = $matchval['team1_score']; 

    $match2 = new stdClass(); 
    $match2->name = $matchval['teamtitle2']; 
    $match2->id = $matchval['teamtitle2']; 
    $match2->seed = 2; 
    $match2->score = $matchval['team2_score']; 

    $rounds[$matchval['round_number']][] = [$match1, $match2]; 

} 

// Extra loop to clean up round numbers 
foreach ($rounds as $round) { 
    $output[] = $round; 
} 

?> 

<script type="text/javascript"> 
    (function (win, doc, $) { 
     win.TestData<?php echo $cnt; ?> = <?php echo json_encode($output); ?>; 
     $(".my_gracket").gracket({src: win.TestData<?php echo $cnt; ?>}); 
    })(window, document, jQuery); 
</script> 
+0

Спасибо за ваш ценный ответ, это помогает мне много чуваков. Большое спасибо за ваше время. Я очень ценю это. Одна из проблем, я должен показать это, когда имя и оценка команды нулевые, так что в то время как построить массив? –

+0

Если они равны нулю, они также будут отображаться в конечном результате как null. Как вы справляетесь с этим, это зависит от сценария ваших скобок - оставьте их как есть, пропустите их или замените нулями другим значением, например «неизвестным», –

Смежные вопросы