Warning: Illegal string offset, array_column, and array_search

0

I have a script in php, which looks for, and compares some JSON returns in 5 different URLs, filters and replaces them with their names, it works with some table items, but also returns me the following error:

  

Warning: Illegal string offset 'category' in   /home/storage/f/af/85/circuitoescolar2/public_html/wp-content/themes/circuito-escolar/agenda.php   online 59

     

Warning: Illegal string offset 'modality' in   /home/storage/f/af/85/circuitoescolar2/public_html/wp-content/themes/circuito-escolar/agenda.php   online 62

It worked without error until I added

$cat =  array_column($categoria, 'codigo');

$mod =  array_column($modalidade, 'codigo');

I do not have a lot of experience, I've researched the articles on the site vi solutions like using var_dump or MYSQLI_ASSOC , but I have no idea how to apply them if they can Heal my doubt, I'll be grateful!

Copy of the code follows:

$retorno_resultados = array();

$colunas =  array_column($equipe, 'codigo'); 

$loc =  array_column($local, 'codigo');

$cat =  array_column($categoria, 'codigo');

$mod =  array_column($modalidade, 'codigo');

foreach((array)$campeonato as $camp){
    foreach((array)$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

            // pesquisa chave do local
            $key3 = array_search($result['local'], $loc);
            $localizacao = $local[$key3]['nome']; // <-- pega o valor

            $key4 = array_search($camp['categoria'], $cat);
            $categorizacao = $categoria[$key4]['nome']; // <-- pega o valor

            $key5 = array_search($camp['modalidade'], $mod);
            $modalidadez = $modalidade[$key5]['nome']; // <-- pega o valor

            $data = $result['data'];
            $data = date('d/m/Y', strtotime($data));

            $i = 0;

            if(isset($camp['codigo']) && isset($result['campeonato']) && $camp['codigo'] == $result['campeonato']){
                $retorno_resultados[++$i][] = array(
                    'mandante' => $result['mandante'], 
                    'visitante' => $result['visitante'],
                    'nm_mandante' => $mandante,
                    'nm_visitante' => $visitante,
                    'nm_cat' => $categorizacao,
                    'nm_mod' => $modalidadez,
                    'nm_local' => $localizacao,
                    'id' => $camp['codigo'],
                    'modalidade' => $camp['modalidade'],
                    'categoria' => $camp['categoria'],
                    'data' => $result['data'],
                    'data_certa' => $data,
                    'placar1n' => $result['placar1n'],
                    'placar2n' => $result['placar2n'],
                    'placar1p' => $result['placar1p'],
                    'placar2p' => $result['placar2p'],
                    'placar1s' => $result['placar1s'],
                    'placar2s' => $result['placar2s'],
                    'jogo' => $result['jogo'],
                    'horario' => $result['horario'],
                    'jogo' => $result['codigo'],
                ); // <--- adiciona
            }
        }  
    }
}
    
asked by anonymous 15.08.2018 / 14:34

1 answer

0

I was able to resolve as follows, the error was in the location of the call, I added an is_array inside the foreach camp and it worked perfectly!

foreach((array)$campeonato as $camp){
    if(!is_array($camp)){

        }else{

            $key4 = array_search($camp['categoria'], $cat);
            $categorizacao = $categoria[$key4]['nome']; // <-- pega o valor

            $key5 = array_search($camp['modalidade'], $mod);
            $modalidadez = $modalidade[$key5]['nome']; // <-- pega o valor

    foreach((array)$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

            // pesquisa chave do local
            $key3 = array_search($result['local'], $loc);
            $localizacao = $local[$key3]['nome']; // <-- pega o valor

            $data = $result['data'];
            $data = date('d/m/Y', strtotime($data));

            $i = 0;
    
15.08.2018 / 16:09