Return data from a Json where there is a specific key in a PHP variable

Asked

Viewed 836 times

1

I have a JSON with a standard structure. Within the structure I have the codTipo that would ruffle between To and B

{
    "codSeq": "001224",
    "codTipo": "A",

} {
    "codSeq": "001244",
    "codTipo": "A",

} {
    "codSeq": "023444",
    "codTipo": "B",

} {
    "codSeq": "0012444",
    "codTipo": "A",

}

I wonder if you have how I pass an ex parameter: "codTipo": "B", and the JSON which is returned to me be only with type data B.

{
        "codSeq": "023444",
        "codTipo": "B",

}

Today I’m using the following code to return me this data:

$jsonAcademy = json_encode($jsonAcademy, JSON_PRETTY_PRINT);

echo $jsonAcademy;
  • 1

    You talk about passing this in the url and already coming back this value or after you capture json with php you pass only this key and return the codType B data?

  • I just want to pass the key in php itself. this Json is not treated by url.

2 answers

2

if you have this data before the json, or using json Code it will come an array, this way you can make a foreach, and compare with the content until you find the code you want. the moment you find the code you want you separate and put it in another array and json.

foreach($jsonAcademy as  $i){
    if(strcmp($i['0'],""codTipo": "B"")==0){
      $arraynovo['0'] = $i['0'];
      $arraynovo['1']= $i['1'];
    }
}

1


Working only with the direct JSON and PHP object, without converting it to array, an example of how you can do it is:

(explain in the code the step-by-step)

<?php
// String JSON
$str_json = '[{"codSeq": "001224","codTipo": "A"},{"codSeq": "001244","codTipo": "A"}, {"codSeq": "023444","codTipo": "B"}, {"codSeq": "0012444","codTipo": "A"}]';
// Analisa a string codificada JSON e converte-a em uma variável do PHP.
$obj = json_decode($str_json);

// Função que recebe como parâmetro a $codTipo e a variável php com a string JSON
function getCodigosPorTipo($codTipo, $obj){
    // Separa com o explode e list a chave 'codTipo' do valor do tipo 'A' ou 'B'
    list($index, $tipo) = explode(":", $codTipo);
    // Remove aspas das variáveis $index e $tipo
    $trimIndex = trim($index, ' " ');
    $index = $trimIndex;
    $trimTipo = trim($tipo, ' " ');
    $tipo = $trimTipo;

    echo "Dados de tipo de código: $tipo<br>";
    foreach ($obj as $index => $dados) {
        // Se o coTipo for igual ao tipo desejado ele imprime as informações
        if ($dados->codTipo === $tipo){
        echo "<br>";
        echo "CodTipo: " . $dados->codTipo . "<br>";
        echo "CodSeq: " . $dados->codSeq . "<br>";
        }
    }
}

// Podemos definir a busca por codTipo A ou B
$busca_por_codTipo = '"codTipo": "B"';
// Chamamos a função 'getCodigosPorTipo' passando os parâmetros necessários para busca e exibição do resultado
getCodigosPorTipo($busca_por_codTipo, $obj);

Executing the code will display:

inserir a descrição da imagem aqui

Converting the JSON string to array is easier to work on, so I leave this another example of code:

(I made the code without function even to realize the proposed, but you can create a function similar to the first code I posted)

<?php
// String JSON
$str_json = '[{"codSeq": "001224","codTipo": "A"},{"codSeq": "001244","codTipo": "A"}, {"codSeq": "023444","codTipo": "B"}, {"codSeq": "0012444","codTipo": "A"}]';
// Converte a string codificada JSON para um array do PHP.
$array_codigos = json_decode($str_json, TRUE);

echo "Dados de tipo de código: B <br><br>";

    foreach ($array_codigos as $index => $dados) {
        // Remove aspas da chave codTipo e armaze numa variável $tipo para comparação
        $tipo = trim($dados['codTipo'], ' " ');
        // Se tipo for igual ao tipo desejado, no caso 'B', ele imprime as informações
        if ($tipo === 'B'){
        echo "CodTipo: " . $dados['codTipo'] . "<br>";
        echo "CodSeq: " . $dados['codSeq'] . "<br>";
        }
    }

Will print the same result:

inserir a descrição da imagem aqui

  • 1

    Thank you very much friend. The two solutions worked! God bless you!

  • Tmj my comrade. 'God bless you': Amen, God bless you too! Let’s get good at programming! =)

  • kkkk... I’m in this fight to improve myself every day... from time to time things catch up then I have to go to experts kkk

  • All right I migrated have little time for programming too (5 months internship + 6 months hired), but this giving to help in what I can and learn here in the community tbm.

Browser other questions tagged

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