Solucionado (ver solução)
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