Return JSON php TRUE or FALSE

Asked

Viewed 184 times

-1

Good morning, I would like my JSON filtering to also search if what I searched indicates that it is "true" or "false.

I use this array to search the file:

<?php
session_start();
error_reporting(0);
//função para filtrar os anúncios
function filtroAnuncio($filtro, $dados){

    $nome =  strtolower($dados["nome"]) ;
    $nomeConveniado =  strtolower($filtro["nomeConveniado"]) ;
    if( ($filtro["cidade"] == "" || $filtro["cidade"] == $dados["cidade"]) &&
        ($filtro["servico"] == "" || $filtro["servico"] == $dados["servicos"]) &&
        ($filtro["especialidade"] == "" || $filtro["especialidade"] == $dados["especialidade"]) &&
        ($filtro["nomeConveniado"] == "" || strrpos($nome, $nomeConveniado) !== false )
    ) {
        return true;
    }
        return false;
}
    $conveniados = array();
    $destaques = array();
    $servicos = array();
    $locais = array();
    $especialidades = array();
    // necessário utilização de cache
    if(empty(@$_SESSION["convs"])){
        $convs = json_decode(file_get_contents('#'));
        $_SESSION["convs"] = $convs;
    }
    $convs = $_SESSION["convs"];
    foreach($convs as $conv){
        $info = array();
        $info["nome"] = $conv->nmConveniado;
        $info["categoria"] = $conv->listaEspecialidade[0]->nmEspecialidade;
        $especialidades[] = $conv->listaEspecialidade[0]->nmEspecialidade;
        //estava faltando adicionar campo especilidade
        $info["especialidade"] = $conv->listaEspecialidade[0]->nmEspecialidade;


        $info["endereco"] = $conv->listaEndereco[0]->nmLogradouro;
        $info["bairro"] = @$conv->listaEndereco[0]->nmBairro;
        $info["cidade"] = $conv->listaEndereco[0]->nmCidade;
        $info["telefone"] = $conv->dsTelefone1;
        $locais[] = $conv->listaEndereco[0]->nmCidade;
        $info["estado"] = $conv->listaEndereco[0]->sgEstado;
        $servicos_str = '';
        $k=0;
        foreach($conv->listaServico as $serv_str){
            $k++;
            $servicos[] = $serv_str->nmServico;
            if($k==count($conv->listaServico)){
                $servicos_str .= $serv_str->nmServico;
            } else {
                $servicos_str .= $serv_str->nmServico.', ';
            }
        }
        $info["servicos"] = $servicos_str;
        //adicionado informação de destaque no array
        $info["flDestaqueSite"] =$conv->flDestaqueSite;
        $info["imagem"] = $conv->listaImagem[0]->nmArquivo;
        $conveniados[] = $info;
        if($conv->flDestaqueSite){
            $destaques[] = $info;
        }
    }
    $_especialidades = array_unique($especialidades);
    $_servicos = array_unique($servicos);
    $_locais = array_unique($locais);
    asort($_especialidades);
    asort($_servicos);
    asort($_locais);
    ?>

But I would like to add a true, because in JSON file it displays this way when the name has to appear:

"flDestaqueSite": "True"

This is the display code:

<!-- Lista -->
<?php $d=0; ?>
<!--<?php shuffle($destaques); ?>-->
<?php

usort($destaques, function($a, $b){
    if($a["flDestaqueSite"] ==  $b["flDestaqueSite"] ) return 0;
    return ($a["flDestaqueSite"] < $b["flDestaqueSite"] ) ? 1 : -1;
});

foreach($destaques as $destaque){ ?>
    <?php
    //filtra os anúncio que não corresponde aos criterios
    if(filtroAnuncio($_POST, $destaque)==false) continue;

    $d++;
    if($d<=5)

    {
    ?>
        <div class="col-lg-12 col-md-12" local="<?php echo $destaques["cidade"]; ?>">
            <div class="listing-item-container list-layout">
                <a href="#conteudo" class="listing-item">
                    <!-- Imagem -->
                    <div class="listing-item-image">
                        <?php if($destaque["imagem"] != ''){ ?>
                            <img data-cfsrc="<?php echo $destaque["imagem"]; ?>" alt="<?php echo $destaque["nome"]; ?>" style="display:none;visibility:hidden;"><noscript><img src="<?php echo $destaque["imagem"]; ?>" alt="<?php echo $destaque["nome"]; ?>"></noscript>
                        <?php } else { ?>
                            <img data-cfsrc="images/sem-imagem.jpg" alt="<?php echo $destaque["nome"]; ?>" style="display:none;visibility:hidden;"><noscript><img src="images/sem-imagem.jpg" alt="<?php echo $destaque["nome"]; ?>"></noscript>
                        <?php } ?>
                        <span class="tag"><?php echo $destaque["categoria"]; ?></span>
                    </div>

                    <!-- Conteúdo -->
                    <div class="listing-item-content">
                        <div class="listing-badge anunciante">Anunciante</div>
                        <div class="listing-item-inner">
                            <h3><?php echo $destaque["nome"]; ?> <i class="verified-icon"></i></h3>
                            <span><?php echo $destaque["telefone"]; ?></span></br>
                            <span><?php echo $destaque["endereco"]; ?>, <?php echo $destaque["bairro"]; ?>, <?php echo $destaque["cidade"]; ?> - <?php echo $destaque["estado"]; ?></span>
                        </div>
                    </div>
                </a>
            </div>
        </div>
    <?php } ?>
<?php }          ?>
  • The problem is that it comes as string, not as boolean? It was very confusing your question.

  • And then @Andersoncarloswoss my question is that, when I put in my search shows results that were not meant to display, are separated by normal highlights and advertisers, only that my search does not identify whether it is true or false

  • And what is the filter code? can you put it in the question?

  • @Andersoncarloswoss, added.

2 answers

0


It was not very clear what you want, but if I understand correctly you can try to do this, so the value of $info["flDestaqueSite"] will be a string, true or false.

$info["flDestaqueSite"] = $conv->flDestaqueSite ? 'true' : 'false';

That is if $conv->flDestaqueSite is returning a boolean.

Test there and see if it works.

  • didn’t work, just want to select the "true"

0

I got it, I put it this way:

$destaques = array_filter($destaques,function($value){
    return $value['flDestaqueSite']==='True';
});

It’s working perfectly for now. I thank you all for your attention!

Browser other questions tagged

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