Warning: Illegal string offset, array_column and array_search

Asked

Viewed 940 times

-1

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

Warning: Illegal string offset 'categoria' in /home/Storage/f/af/85/circuitoescolar2/public_html/wp-content/themes/school circuit/agenda.php on line 59

Warning: Illegal string offset 'modality' in /home/Storage/f/af/85/circuitoescolar2/public_html/wp-content/themes/school circuit/agenda.php on line 62

it ran smoothly until I added

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

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

I do not have much experience, I did a search in the site articles I saw solutions how to use the var_dump or MYSQLI_ASSOC, but I have no idea how to apply them, if you can remedy my doubt I will be grateful!

Follow copy of the code:

$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
            }
        }  
    }
}

1 answer

-1

I managed to solve 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;

Browser other questions tagged

You are not signed in. Login or sign up in order to post.