Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

Retornando dados em REST no PHP

como vai amigos tudo bem !!! escrevi meu codigo php rest assim:

        <?php


              $curl = curl_init();
              curl_setopt_array($curl, array(
                CURLOPT_URL => "https://meuwebservice/api/rest",
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => "",
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 30,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => "GET",
                CURLOPT_HTTPHEADER => array(
                              "authorization: Basic YXBpOmsshpcssGVddyb3BaapYSB0cmasdF2YWdlbSBiaXBlbmFkbw==",
                              "cache-control: no-cache",
                              "content-type: application/json",
                          ),
                      ));
              $response = curl_exec($curl);
              $err = curl_error($curl);

              curl_close($curl);

              if ($err) {
                echo "cURL Error #:" . $err;
              } else {
                echo $response;
              }
              ?>

ai tenho esse retorno abaixo: Como eu faria pra retornar na tela pra mim somente UM VALOR desse resultado !! exemplo : echo "Plano: ". 20 Mb ... poderiam me dar uma luz ???

[{"id":514,"filial":5,"name":"COD. 514 20 Mb RES. TRL","nome_amigavel":"20 Mb","mensalidade":"89.90","desconto":"0.00","ativo":1,"tipo":1,"instalacao":"300.00","bnd_up":2000,"bnd_down":20000},{"id":422,"filial":4,"name":"COD. 069 30 Mb TRANSPORTE","nome_amigavel":"30 Mb","mensalidade":"1500.00","desconto":"0.00","ativo":1,"tipo":3,"instalacao":"1500.00","bnd_up":0,"bnd_down":30000},{"id":310,"filial":12,"name":"COD. 019 40 Mb RES. BZS (REDE PON)","nome_amigavel":"40 Mb","mensalidade":"139.90","desconto":"20.00","ativo":0,"tipo":1,"instalacao":"300.00","bnd_up":4000,"bnd_down":40000},{"id":536,"filial":4,"name":"COD. 536 20 Mb CORP. (FIBRA)","nome_amigavel":"20 Mb","mensalidade":"200.00","desconto":"0.00","ativo":1,"tipo":3,"instalacao":"1500.00","bnd_up":0,"bnd_down":20000},{"id":507,"filial":12,"name":"COD. 507 100 Mb COM BZS.","nome_amigavel":"100 Mb","mensalidade":"159.90","desconto":"0.00","ativo":1,"tipo":2,"instalacao":"300.00","bnd_up":15000,"bnd_down":100000},{"id":527,"filial":4,"name":"COD. 527 10 Mb RES. RJO","nome_amigavel":"10 Mb","mensalidade":"79.90","desconto":"0.00","ativo":1,"tipo":1,"instalacao":"300.00","bnd_up":1000,"bnd_down":10000},{"id":459,"filial":6,"name":"COD. 459 40 Mb RES. CBF","nome_amigavel":"40 Mb","mensalidade":"119.90","desconto":"0.00","ativo":1,"tipo":1,"instalacao":"300.00","bnd_up":4000,"bnd_down":40000},{"id":301,"filial":4,"name":"10M x 10M TRANSPORTE","nome_amigavel":"10 Mb","mensalidade":"5000.00","desconto":"0.00","ativo":1,"tipo":3,"instalacao":"300.00","bnd_up":0,"bnd_down":10000},{"id":461,"filial":6,"name":"COD. 461 20 Mb COM CBF.","nome_amigavel":"20
10 respostas

Oi Leonardo, tudo bem? No response você precisa usar a função json_decode e assim transformar a resposta em um array com outros arrays associativos:

$dados = json_decode($response, true);

Depois com os arrays na mão, fica mais tranquilo?

rs.. na verdade nao ? seria isso : ? continua me voltando todos os dados !!!

)); $response = curl_exec($curl); $dados = json_decode($response, true);

$err = curl_error($curl);

curl_close($curl);

if ($err) { echo "cURL Error #:" . $err; }

echo $response;

Não to sabendo mesmo fazer !!! )); $response = curl_exec($curl);

$err = curl_error($curl);

curl_close($curl);

$json_output = json_decode($response, true);

$string_json = '{"id":514}';

$array_php = json_decode($string_json, true); echo "Nome: ".$array_php['id'];

Espera, isso é tudo o que o curl retorna?

[{"id":514,"filial":5,"name":"COD. 514 20 Mb RES. TRL","nome_amigavel":"20 Mb","mensalidade":"89.90","desconto":"0.00","ativo":1,"tipo":1,"instalacao":"300.00","bnd_up":2000,"bnd_down":20000},{"id":422,"filial":4,"name":"COD. 069 30 Mb TRANSPORTE","nome_amigavel":"30 Mb","mensalidade":"1500.00","desconto":"0.00","ativo":1,"tipo":3,"instalacao":"1500.00","bnd_up":0,"bnd_down":30000},{"id":310,"filial":12,"name":"COD. 019 40 Mb RES. BZS (REDE PON)","nome_amigavel":"40 Mb","mensalidade":"139.90","desconto":"20.00","ativo":0,"tipo":1,"instalacao":"300.00","bnd_up":4000,"bnd_down":40000},{"id":536,"filial":4,"name":"COD. 536 20 Mb CORP. (FIBRA)","nome_amigavel":"20 Mb","mensalidade":"200.00","desconto":"0.00","ativo":1,"tipo":3,"instalacao":"1500.00","bnd_up":0,"bnd_down":20000},{"id":507,"filial":12,"name":"COD. 507 100 Mb COM BZS.","nome_amigavel":"100 Mb","mensalidade":"159.90","desconto":"0.00","ativo":1,"tipo":2,"instalacao":"300.00","bnd_up":15000,"bnd_down":100000},{"id":527,"filial":4,"name":"COD. 527 10 Mb RES. RJO","nome_amigavel":"10 Mb","mensalidade":"79.90","desconto":"0.00","ativo":1,"tipo":1,"instalacao":"300.00","bnd_up":1000,"bnd_down":10000},{"id":459,"filial":6,"name":"COD. 459 40 Mb RES. CBF","nome_amigavel":"40 Mb","mensalidade":"119.90","desconto":"0.00","ativo":1,"tipo":1,"instalacao":"300.00","bnd_up":4000,"bnd_down":40000},{"id":301,"filial":4,"name":"10M x 10M TRANSPORTE","nome_amigavel":"10 Mb","mensalidade":"5000.00","desconto":"0.00","ativo":1,"tipo":3,"instalacao":"300.00","bnd_up":0,"bnd_down":10000},{"id":461,"filial":6,"name":"COD. 461 20 Mb COM CBF.","nome_amigavel":"20

isso !

quero selecionar somente uma informação !

solução!

Resolvido !!! $json_output = json_decode($response, true);

echo $json_output[0]['nome'];

Isso mesmo Leonardo, isso já resolve o seu problema ou precisa de ajuda em algo mais?

Lembrando que a sua requisição retorna o registro nome de vários usuários e com esse trecho de código estará selecionando o nome apenas do primeiro

$term = '422';

$data = json_decode($response); $filtered = array_filter($data, function($item) use ($term) { return stripos($item->id, $term) !== false; }); print_r($filtered);

nesse código acima meu retorno é este :

Array ( [0] => stdClass Object ( [id] => 422 [filial] => 4 [name] => COD. 069 30 Mb TRANSPORTE [nome_amigavel] => 30 Mb [mensalidade] => 1500.00 [desconto] => 0.00 [ativo] => 1 [tipo] => 3 [instalacao] => 1500.00 [bnd_up] => 0 [bnd_down] => 30000 ) )

Agora como eu faria para imprimir com um echo ou print apenas 1 informação desse retorno !!!!??????? alguem me ajuda ????

Pode ser algo como:

<?php echo $filtered[0]->name