Failed to Replace ID by PHP Team Name

1

I'm consuming a Web Service in php, I created a function to compare championships and to return the id of the teams that will play or will play, in another url, I have the names of the teams and the ids of the teams, I'm trying to compare the id of the teams that are in the games with the teams of the URL and replace the ID by the name, but it is not working, could you tell me where I am wrong?

URLs

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

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

$api_equipes = 'https://sportsmanager.com.br/api/[email protected]&token=SXLSO8342HSDE78623GVS7234GNMSKL';
$equipes = wp_remote_get( $api_equipes );
$equipe = json_decode( wp_remote_retrieve_body( $equipes ), true );

$retorno_resultados = array();

Filters the teams of the games of a specific championship:

foreach($campeonato as $camp){
    foreach($resultado as $result){
        if(!is_array($result)){

        }else{
            if(isset($camp['codigo']) && isset($result['campeonato']) && $camp['codigo'] == $result['campeonato']){
                $retorno_resultados[$result['campeonato']][] = array(
                    'mandante' => $result['mandante'], 
                    'visitante' => $result['visitante'],
                    'nm_mandante' => '',
                    'nm_visitante' => '',
                    'id' => $camp['codigo'],
                    'data' => $result['data'],
                    'placar1n' => $result['placar1n'],
                    'placar2n' => $result['placar2n'],
                    'placar1p' => $result['placar1p'],
                    'placar2p' => $result['placar2p'],
                    'placar1s' => $result['placar1s'],
                    'placar2s' => $result['placar2s']
                ); // <--- adiciona
            }
        }  
    }
}

I replaced the ID by the name by looking at the "RESULTS" and "TEAMS" URLs:

foreach($retorno_resultados as $a){
    foreach($a as $result){
        $mandante = '';
        $visitante = '';
        foreach($equipe as $role){
            if(!is_array($role)){
                    //$retorno = $retorno.'<td>'.$row.'</td>';
            }else{
                if($role['codigo'] == $result['mandante']){
                    //$retorno_equipes[] = array('mandante' => '<td>'.$role['nome'].'</td>', 'visitante' => $role['nome']); // <--- adiciona
                    $result['nm_mandante'] = $role['nome'];
                    //echo $result['nm_mandante'];
                }

                if($role['codigo'] == $result['visitante']){
                    $result['nm_visitante'] = $role['nome'];
                    //echo $role['nome'];
                }
            }   
        }
        //echo 'chegou';
        //$result['nm_mandante'] = $mandante;
        //$result['nm_visitante'] = $visitante;
    }
}

Print the contents of the div:

<script>

$(function(){

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

    var html3 = '';
    var id='';

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

    html3 += '<tr><td><?php echo $res['nm_mandante'];?>x<?php echo $res['nm_visitante'];?></td></tr>';
    id = <?php echo $res['id'] ?>;


    <?php } ?>
    $('#cont-'+id).html(html3);
    <?php } ?>

});

</script>

Return JSON URL: results:

{
"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
},
  {
"codigo": "25",
"campeonato": "19",
"data": "2018-08-13 00:00:00",
"horario": "19h",
"local": "9",
"realizada": "N",
"jogo": "0",
"fase": "2",
"rodada": "0",
"mandante": "2",
"visitante": "6",
"placar1n": null,
"placar2n": null,
"placar1p": null,
"placar2p": null,
"placar1s": null,
"placar2s": null,
"grupo1": "",
"grupo2": "",
"quadra": "9",
"obs": null
},

Return JSON URL: teams:

 {
"codigo": "1",
"nome": "Arbos Santo André",
"nomeabreviado": "ARBOS SA",
"url": "arbos-santo-andre",
"telefone": "",
"email": "",
"endereco": "",
"complemento": null,
"bairro": "",
"cidade": "",
"uf": "",
"cep": ""
},
  {
"codigo": "2",
"nome": "Arbos São Bernardo do Campo",
"nomeabreviado": "ARBOS SBC",
"url": "arbos-sao-bernardo-do-campo",
"telefone": "",
"email": "",
"endereco": "",
"complemento": null,
"bairro": "",
"cidade": "",
"uf": "",
"cep": ""
},
  {
"codigo": "16",
"nome": "Arbos São Caetano do Sul",
"nomeabreviado": "ARBOS SCS",
"url": "arbos-sao-caetano-do-sul",
"telefone": "",
"email": "",
"endereco": "",
"complemento": null,
"bairro": "",
"cidade": "",
"uf": "",
"cep": ""
},
  {
"codigo": "23",
"nome": "Barão - Mauá",
"nomeabreviado": "B. MAUÁ",
"url": "barao--maua",
"telefone": "",
"email": "",
"endereco": "rua onze de junho, 166",
"complemento": null,
"bairro": "jd do pilar",
"cidade": "maua",
"uf": "SP",
"cep": "09360-010"
},
  {
"codigo": "5",
"nome": "Barão SBC",
"nomeabreviado": "BAR",
"url": "barao-sbc",
"telefone": "",
"email": "",
"endereco": "",
"complemento": null,
"bairro": "",
"cidade": "",
"uf": "",
"cep": ""
},

NOTE: THERE ARE MORE RETURN RECORDS, BUT IT IS VERY EXTENSIVE.

    
asked by anonymous 02.08.2018 / 13:31

1 answer

1

Instead of creating another foreach just to search for team names, it's easier to do this when you're building the array, using two php features. What are array_search to search for a value and get the key, and array_column to bring up a list of values of a given array column.

Your code looks like this:

$colunas =  array_column($equipe, 'codigo'); // <-- pega todos os valores da coluna 'codigo'

foreach($campeonato as $camp){
    foreach($resultado as $result){
        if(!is_array($result)){

        }else{


            // pesquisa chave do mandante
            $key1 = array_search($result['mandante'],$colunas);
            $mandante = $equipe[$key1]['nome']; // <-- pega o valor

            // pesquisa chave do visitante
            $key2 = array_search($result['visitante'], $colunas);
            $visitante = $equipe[$key2]['nome']; // <-- pega o valor

            if(isset($camp['codigo']) && isset($result['campeonato']) && $camp['codigo'] == $result['campeonato']){
                $retorno_resultados[$result['campeonato']][] = array(
                    'mandante' => $result['mandante'], 
                    'visitante' => $result['visitante'],
                    'nm_mandante' => $mandante,
                    'nm_visitante' => $visitante,
                    'id' => $camp['codigo'],
                    'data' => $result['data'],
                    'placar1n' => $result['placar1n'],
                    'placar2n' => $result['placar2n'],
                    'placar1p' => $result['placar1p'],
                    'placar2p' => $result['placar2p'],
                    'placar1s' => $result['placar1s'],
                    'placar2s' => $result['placar2s']
                ); // <--- adiciona
            }
        }  
    }
}
    
02.08.2018 / 14:40