Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Giovanird

Retornar lista de valors Json

Recommended Posts

Através do json_decote abaixo:

$decode = json_decode($json);
echo ("<pre>");
print_r ($decode);
echo ("</pre>");

Recebo a seguinte estrutura abaixo:

stdClass Object
 (
   [Data] => Array
     (
       [0] => stdClass Object
          (
            [modelo] => stdClass Object
              (
                [cor] => azul
                [tamanho] => 43
                  )

        [1] => stdClass Object
            (
             [modelo] => stdClass Object
              (
                [cor] => verde
                [tamanho] => 44
                  )

        [2] => stdClass Object
             (
              [modelo] => stdClass Object
               (
                [cor] => laranja
                [tamanho] => 41
                  )
      )
 )

E com o seguinte código abaixo, só me retorna a primeira posição "cor"

$listar = $decode->Data[0]->modelo->cor;
echo"Cor: ".$listar."<br>";


Cor: azul

Se eu retirar o valor [0] do Array Data não me retorna nada.

$listar = $decode->Data->modelo->cor;
echo"Cor: ".$listar."<br>";

Cor:

O que devo fazer para que eu possa receber todas as linhas da lista?
Cor: azul
Cor: verde
Cor: laranja

Não consegui fazer com o código abaixo, me retornando nada:

for($i = 0; $i < count($decode['Data']); $i++) {
echo "<div>Cor: " . $decode[$i]->{'cor'} . "</div>";
echo "<br />";
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Tente assim:

$cores = array_map(function($obj) {
    return $obj->modelo->cor;
}, $decode->Data);
echo '<pre>';
print_r($cores);
echo '</pre>';

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, tetsuo disse:

Olá!

Tente assim:


$cores = array_map(function($obj) {
    return $obj->modelo->cor;
}, $decode->Data);
echo '<pre>';
print_r($cores);
echo '</pre>';

 

Muito obrigado tetsuo, retornou certinho.
Coloquei mais um "return" para poder receber o outro campo, "tamanho, porem não tive sucesso.
 

$cores = array_map(function($obj) {
    return $obj->modelo->cor;
    return $obj->modelo->tamanho;
}, $decode->Data);
echo '<pre>';
print_r($cores);
echo '</pre>';

e no caso de passar os valores para uma variável, faria assim?
 

$gravacores = $cores;
$gravatamanho = $tamanho;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por eduh.castro19
      Olá,boa noite a todos.
      Estou com um problema e já não sei como arrumar, toda vez que uso o a função =
       
      $json = file_get_contents('http://localhost/arquivo1.php'); $obj = json_decode($json); echo $obj->nome;  
      Ele me retorna um erro = ( Trying to get property 'name' of non-object in )
      Tenho 3 arquivos (Conexão.php,Arquivo1.php,Arquivo2.php)
      Eles estão assim:
       
      Arquivo1 =
      require('conexão.php'); while ($row = $usuarios->fetch(PDO::FETCH_ASSOC)) {      $nomex = $row['nome'];      $datax = $row['data'];       $encoda= array('nome' => $nomex, 'data' => $datax );     echo json_encode($encoda);} Arquivo2 =
      $json = file_get_contents('http://localhost/arquivo1.php'); $obj = json_decode($json); echo $obj->nome; echo json_last_error_msg(); O erro acontece no Arquivo2
      Já tentei por HTTP HEADER JSON Mas não adiantou,não sei mais o que fazer,se alguem puder ajudar. Agradecerei demais! Boa noite a todos.
       
       
       
    • Por Ricardo Flores
      Olá pessoal...

      To precisando de uma ajuda galera, to tendo retorno de uma API por um URL e ela me retornar o seguinte, abaixo um exemplo:
      ( [allDone] => 1 [starTime] => 2019-02-21T20:15:41.871318 [endTime] => 2019-02-21T20:15:45.58929 [executionResult] => Array ( [0] => stdClass Object ( [field] => busca_provider_spc_serasa_score [valid] => [observation] => {"Result":[{"MatchKeys":"doc{57279896049}","CreditData":[{"Origin":"SPC","QueryDate":"2019-02-21T00:00:00","BasicData":{"TaxIdNumber":"57279896049","TaxIdCountry":"Brazil","AlternativeIdNumbers":{"VoterRegistration":"6521890442"},"Name":"JANAIR LULA DA SILVA","Gender":"U","BirthDate":"1967-11-30T00:00:00","Age":51,"ZodiacSign":"SAGITARIO","MotherName":"MARIA LULA DA SILVA","TaxIdStatus":"","TaxIdOrigin":"SPC"},"PersonalRelationships":[{"RelatedEntityName":"MARIA LULA DA SILVA","RelationshipType":"MOTHER","RelationshipLevel":"DIRECT"}],"Emails":[],"Phones":[],"Addresses":[{"AddressMain":"R MONTEIO LOBATO","Number":"000107","Complement":"","Neighborhood":"","ZipCode":"95780000","City":"MONTENEGRO","State":"RS","Country":"Brazil"}],"TotalDebts":9217.06,"TotalCount":1,"TotalPreviousQueries":2,"PreviousQueries":[{"Origin":"SPC BRASIL - SAO PAULO / SP","QueryDate":"2019-02-21T00:00:00","Name":"BIG DATA SOLUCOES EM TECNOLOGIA","CityAndState":{"City":"RIO DE JANEIRO","State":"RJ"}},{"Origin":"SPC BRASIL - SAO PAULO / SP","QueryDate":"2019-02-16T00:00:00","Name":"BIG DATA SOLUCOES EM TECNOLOGIA","CityAndState":{"City":"RIO DE JANEIRO","State":"RJ"}}],"Occurrences":[{"Name":"PROTEST","TotalValue":9217.06,"TotalCount":1,"FirstOccurrenceDate":"0001-01-01T00:00:00","LastOccurrenceDate":"2019-01-09T00:00:00","AdditionalOutputData":{},"Details":[{"Origin":"","ExpiringDate":"0001-01-01T00:00:00","Date":"2019-01-09T00:00:00","Reason":"","Value":9217.06,"Count":1,"IssuingPeople":[],"IssuingCompanies":[{"TaxIdNumber":"","OfficialName":"UN","TradeName":"","Phones":[],"Addresses":[{"AddressMain":"","Number":"","Complement":"","Neighborhood":"","ZipCode":"","City":"MONTENEGRO","State":"RS","Country":"Brazil"}],"AdditionalOutputData":{"Contract":""}}],"AdditionalOutputData":{}}]}],"Score":{"Name":"SCORE 12 MONTHS","Class":"F","Horizon":"12","Probability":"0","Score":"0","ScoreType":"RESTRICTED","Reason":"O DOCUMENTO CONSULTADO APRESENTA REGISTRO(S) DE INADIMPLENCIA.","AdditionalOutputData":{}}}]}],"QueryId":"dcff3486-9efe-4628-a8f7-XXXXXXXXXXXX","ElapsedMilliseconds":3277.0,"Status":{"ondemand_credit_spc_score_12_months":[{"Code":0,"Message":"OK"}]}} [validationSource] => provider-spc-serasa-score [available] => 1 [similarity] => 0 ) ) [plds] => Array ( ) [approved] => [disaproveByRule] => [aditionalResponse] => Array ( ) ) Pessoal como visualizo  "layoutizo" o retorno dessa API dentro do PHP?
       
      se alguém puder me ajudar fico grato
       
       
       
    • Por kukamax
      Boa noite, como pegar este form,  transforma num json pra inserir no mongodb, com php json_decode
      <form id="form1" name="form1" method="post" action="json.php"> <p><label>Nome:</label><input type="Text" name="campo[nome]" id="campo[]"></p> <fieldset class="modalidade"> <p><input type="checkbox" name="campo[]" id="campo[modalidade]" value="Futebol" id="campo[]" >Futebol</p> <p><input type="checkbox" name="campo[]" id="campo[modalidade]" value="Futsal" id="campo[]">Futsal</p> </fieldset> <input type="submit" value="Submeter" /> </form> e sa saida do json_decode:
      $compo = {"nome":"Fulano","modalidade":["Futsal","Volei"]};
      desde já obrigado
    • Por Fahl Edu
      Buenas pepow....

      Não manjo muito desses paranauê, mas consegui fazer umas coisa me baseando em códigos que achei na net, mas dei uma enroscada...

      Tenho essa API: https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=agro3&interval=1min&outputsize=full&apikey=P75WUJJ5C52V1SY1
       
      Que me trás algo assim:
      { "Meta Data": { "1. Information": "Intraday (1min) prices and volumes", "2. Symbol": "agro3", "3. Last Refreshed": "2017-09-13 14:09:00", "4. Interval": "1min", "5. Output Size": "Full size", "6. Time Zone": "US/Eastern" }, "Time Series (1min)": { "2017-09-13 14:09:00": { "1. open": "12.7400", "2. high": "12.7400", "3. low": "12.7400", "4. close": "12.7400", "5. volume": "200" }, "2017-09-13 14:08:00": { "1. open": "12.7200", "2. high": "12.7200", "3. low": "12.7200", "4. close": "12.7200", "5. volume": "400" }, "2017-09-13 14:03:00": { "1. open": "12.7200", "2. high": "12.7200", "3. low": "12.7200", "4. close": "12.7200", "5. volume": "100" }, "2017-09-13 13:57:00": { "1. open": "12.7400", "2. high": "12.7400", "3. low": "12.7400", "4. close": "12.7400", "5. volume": "500"  
      E estou tentando tratar ela com o código:
      <?php $ativo = 'CARD3'; header('Content-Type: application/json; charset=utf-8'); $json = file_get_contents('https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol='.urlencode($ativo).'&interval=1min&outputsize=compact&apikey=P75WUJJ5C52V1SY1'); $obj = json_decode($json, true); //pegar data da ultima atualização foreach ($obj['Meta Data'] as $periodo) { echo $periodo. ' | ' ; } //pegar valor de fechamento foreach ($obj['Time Series (1min)']['2017-09-12 15:55:00'] as $close) { echo $close. ' | '; } Até certo ponto está funcionado (apesar de dar umas bugadas de vez e quando qdo a data muda), estou conseguindo o esse resultado:
       
      Intraday (1min) prices and volumes | CARD3 | 2017-08-30 16:09:00 | 1min | Compact | US/Eastern | 9.7000 | 9.9000 | 9.6300 | 9.6500 | 209200 |
      Porem eu queria pegar só duas informações especificas dessa API, que seria o "3. Last Refreshed" para identificar o horário mais atual e jogar em uma variável, e com ela identificar o valor do "4. close" mais recente...

      Pelo que eu achei que tinha entendido, seria só colocar o caminho todo, tipo :
      ($obj['Time Series (1min)']['2017-08-30 16:09:00']['4. close']  mas se faço isso da erro: 
      <b>Warning</b>: Invalid argument supplied for foreach() in <b>/storage/ssd2/526/2780526/public_html/newEmptyPHP.php</b> on line <b>14</b><br /> Poderiam me dar uma luz?

      Gracias
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.