Doubt printing more than one item in return Web service JSON

0

I have a website in Wordpress and I'm consuming a Web Service, I created a function to filter the championships based on some information, If all are true, it returns the name of the respective championship, the teams, their games and results, until then everything works perfectly, but I'm having trouble displaying all the league values, he's calling only one of the games, but there are more of a "championship": "18" in return results, but on the screen is only printing one of them, could anyone help me?

<?php /* Template Name: Teste Api */ get_header(); ?>

<?php 
    $api_campeonatos = 'https://sportsmanager.com.br/api/[email protected]&token=SXLSO8342HSDE78623GVS7234GNMSKL&ano=2018&status=A';
    $campeonatos = wp_remote_get( $api_campeonatos );
    $campeonatos_data = json_decode( wp_remote_retrieve_body( $campeonatos ), true );
    $retorno_campeonatos = array(); // <- mudar para array

    if($campeonatos_data){
        foreach($campeonatos_data as $row){
            if(!is_array($row)){
                //$retorno = $retorno.'<td>'.$row.'</td>';
            }else{
                if($row['sexo'] == 'M' && $row['modalidade'] == 2 && $row['categoria'] == 4){
                    $retorno_campeonatos[] = array('valor' => '<td>'.$row['nome'].'</td>', 'id' => $row['codigo']); // <--- adiciona
                }   
            }   
        }
    }
?>

<script>

$(function(){

    var html = '';

    <?php foreach($retorno_campeonatos as $valor){ ?>

        html += '<a class="list-group-item list-group-item-action" data-toggle="list" href="#bloco-<?php echo $valor['id'];?>" role="tab"><?php echo $valor['valor'];?></a>';

    <?php } ?>

    $('#myList').html(html);

});

</script>

<div class="container">
    <div class="row">   
        <div id="contents">
            <div class="list-group" id="myList" role="tablist">
            </div>

            <div id="tabList" class="tab-content">
            </div>
        </div>
    </div>
</div>

<?php
// pega os valores da primeira URL
$api_campeonatos = 'https://sportsmanager.com.br/api/[email protected]&token=SXLSO8342HSDE78623GVS7234GNMSKL&ano=2018&status=A';
$campeonato = wp_remote_get( $api_campeonatos );
$campeonato = json_decode( wp_remote_retrieve_body( $campeonato ), true );

// pega os valores da segunda URL
$api_resultados = 'https://sportsmanager.com.br/api/[email protected]&token=SXLSO8342HSDE78623GVS7234GNMSKL&ano=2018&status=A';
$resultado = wp_remote_get( $api_resultados );
$resultado = json_decode( wp_remote_retrieve_body( $resultado ), true );

$retorno_resultados = array();

foreach($campeonato as $camp){
    foreach($resultado as $result){
        if(isset($camp['codigo']) && isset($result['campeonato']) && $camp['codigo'] == $result['campeonato']){
            $retorno_resultados[] = array(
                'mandante' => '<td>'.$result['mandante'].'</td>', 
                'visitante' => '<td>'.$result['visitante'].'</td>', 
                'id' => $camp['codigo'],
                'data' => '<td>'.$camp['data'],
                'placar1n' => '<td>'.$result['placar1n'].'</td>',
                'placar2n' => '<td>'.$result['placar2n'].'</td>',
                'placar1p' => '<td>'.$result['placar1p'].'</td>',
                'placar2p' => '<td>'.$result['placar2p'].'</td>',
                'placar1s' => '<td>'.$result['placar1s'].'</td>',
                'placar2s' => '<td>'.$result['placar2s'].'</td>'
            ); // <--- adiciona
            break;
        }
    }
}
?>
<script>

$(function(){

    var html2 = '';

    <?php foreach($retorno_resultados as $val){ ?>

        html2 += '<div class="tab-pane" id="bloco-<?php echo $val['id'];?>" role="tabpanel"><td><?php echo $val['mandante'];?>x<?php echo $val['visitante'];?></td></div>';

    <?php } ?>

    $('#tabList').html(html2);

});

</script>




<?php get_footer(); ?>

Return Championships:

  {
"codigo": "17",
"nome": "CIRCUITO ESCOLAR - SÉRIE OURO",
"modalidade": "2",
"categoria": "6",
"sexo": "M",
"data": "2018-08-13 00:00:00",
"atualizacao": null,
"status": "N"
},
  {
"codigo": "19",
"nome": "CIRCUITO ESCOLAR - SÉRIE OURO",
"modalidade": "2",
"categoria": "4",
"sexo": "M",
"data": "2018-08-13 00:00:00",
"atualizacao": null,
"status": "N"
},
  {
"codigo": "18",
"nome": "CIRCUITO ESCOLAR - SÉRIE PRATA",
"modalidade": "2",
"categoria": "4",
"sexo": "M",
"data": "2018-08-13 00:00:00",
"atualizacao": null,
"status": "N"
},

Return Results

{
"codigo": "30",
"campeonato": "18",
"data": "2018-08-31 00:00:00",
"horario": "19h",
"local": "4",
"realizada": "N",
"jogo": "0",
"fase": "2",
"rodada": "0",
"mandante": "7",
"visitante": "5",
"placar1n": null,
"placar2n": null,
"placar1p": null,
"placar2p": null,
"placar1s": null,
"placar2s": null,
"grupo1": "",
"grupo2": "",
"quadra": "4",
"obs": null
},
  {
"codigo": "31",
"campeonato": "18",
"data": "2018-09-11 00:00:00",
"horario": "19H",
"local": "2",
"realizada": "N",
"jogo": "0",
"fase": "2",
"rodada": "0",
"mandante": "5",
"visitante": "3",
"placar1n": null,
"placar2n": null,
"placar1p": null,
"placar2p": null,
"placar1s": null,
"placar2s": null,
"grupo1": "",
"grupo2": "",
"quadra": "2",
"obs": null
},
  {
"codigo": "32",
"campeonato": "18",
"data": "2018-09-25 00:00:00",
"horario": "19H",
"local": "4",
"realizada": "N",
"jogo": "0",
"fase": "2",
"rodada": "0",
"mandante": "7",
"visitante": "3",
"placar1n": null,
"placar2n": null,
"placar1p": null,
"placar2p": null,
"placar1s": null,
"placar2s": null,
"grupo1": "",
"grupo2": "",
"quadra": "4",
"obs": null
},
    
asked by anonymous 01.08.2018 / 00:02

1 answer

0

In both cases, you are sweeping the return, and when the condition is satisfied, you are always creating an array and overriding the return variable.

You run array_push ($ list, items ...); at each iteration on return.

Note: Beware of the API consumption URL, user and token, anyone with bad intentions can consume the services.

    
01.08.2018 / 00:29