Jump to content

Question

Boa tarde,

 

Eu tenho um arquivo json que está me retornando da seguinte maneira.

 

{"ntg-version":"19.1.30.1719","treesize":3500,"sensors":[{"objid":100044,"downtimesince":"","downtimesince_raw":"","tags":"bandwidthsensor snmptrafficsensor OI MG Central-1003 Rede-Terrestre Rede-Cooperativas","device":"3169-80 | PSA5054927 |"},{"objid":100045,"downtimesince":"","downtimesince_raw":"","tags":"WAN Oi-R1-256Kb OI MG Central-1003 Rede-Terrestre Rede-Cooperativas","device":"3169-31 | PSA5054627 |"},{"objid":100047,"downtimesince":"","downtimesince_raw":"","tags":"WAN Algar-128Kb ALGAR MG Central-1003 Rede-Terrestre Rede-Cooperativas","device":"8178-0 | 0000137653-URA |"},{"objid":100048,"downtimesince":"","downtimesince_raw":"","tags":"bandwidthsensor snmptrafficsensor ALGAR MG Central-1003 Rede-Terrestre Rede-Cooperativas","device":"3178-0 | 0000187583-URA |"},{"objid":10006,"downtimesince":"","downtimesince_raw":"","tags":"bandwidthsensor snmptrafficsensor OI PR Central-2009 Rede-Terrestre Rede-Cooperativas","device":"5340-11 | TAA0738587 | 103.28.31.253"}]

Porém necessito separar os valores que estão nos itens device e tags. Isso já estou conseguindo fazer. O problema esta sendo na hora de gerar o novo array que está dando um loop. Saindo o seguinte resultado:

 

Array
(
    [0] => Array
        (
            [objid] => 100044
            [downtimesince] => 
            [Coop] => 2459-31 
            [Desi] =>  PSA505125447 
            [Ipsat] => 
            [Operadora] => OI
            [Uf] => MG
            [Central] => Central-14553
        )

)
Array
(
    [0] => Array
        (
            [objid] => 100044
            [downtimesince] => 
            [Coop] => 24569-31 
            [Desi] =>  PSA50545827 
            [Ipsat] => 
            [Operadora] => OI
            [Uf] => MG
            [Central] => Central-2115503
        )

    [1] => Array
        (
            [objid] => 100045
            [downtimesince] => 
            [Coop] => 544169-31 
            [Desi] =>  PSA50544527 
            [Ipsat] => 
            [Operadora] => OI
            [Uf] => MG
            [Central] => Central-1003
        )

)
Array
(
    [0] => Array
        (
            [objid] => 100044
            [downtimesince] => 
            [Coop] => 25469-31 
            [Desi] =>  PSA5054827 
            [Ipsat] => 
            [Operadora] => OI
            [Uf] => MG
            [Central] => Central-2543
        )

    [1] => Array
        (
            [objid] => 100045
            [downtimesince] => 
            [Coop] => 25469-31 
            [Desi] =>  PSA50545587 
            [Ipsat] => 
            [Operadora] => OI
            [Uf] => MG
            [Central] => Central-4452
        )

    [2] => Array
        (
            [objid] => 100047
            [downtimesince] => 
            [Coop] => 545178-0 
            [Desi] =>  00015453-URA 
            [Ipsat] => 
            [Operadora] => ALGAR
            [Uf] => MG
            [Central] => Central-548003
        )

)
Array
(
    [0] => Array
        (
            [objid] => 100044
            [downtimesince] => 
            [Coop] => 54169-31 
            [Desi] =>  PSA5542827 
            [Ipsat] => 
            [Operadora] => OI
            [Uf] => MG
            [Central] => Central-3615
        )

    [1] => Array
        (
            [objid] => 100045
            [downtimesince] => 
            [Coop] => 5869-31 
            [Desi] =>  PSA5054451557 
            [Ipsat] => 
            [Operadora] => OI
            [Uf] => MG
            [Central] => Central-254
        )

    [2] => Array
        (
            [objid] => 100047
            [downtimesince] => 
            [Coop] => 55178-0 
            [Desi] =>  000dada663-URA 
            [Ipsat] => 
            [Operadora] => ALGAR
            [Uf] => MG
            [Central] => Central-12555
        )

    [3] => Array
        (
            [objid] => 100048
            [downtimesince] => 
            [Coop] => 5178-0 
            [Desi] =>  0000137dada3-URA 
            [Ipsat] => 
            [Operadora] => ALGAR
            [Uf] => MG
            [Central] => Central-10255
        )

)

segue meu script

 


<?php


$url = "http://localhost/json.html";

$info = file_get_contents($url);

$data = json_decode($info);


$arr = array();


foreach($data->sensors as $item){

$device = utf8_decode($item -> device);
$downtimesince = utf8_decode($item -> downtimesince);
$tags = ($item -> tags);
$objid = utf8_decode($item -> objid); 
       
list($coop, $des, $ipsat) = array_pad(explode('|',$device), 3, '');
list($nada1, $nada2, $operadora, $uf, $central) = array_pad(explode(' ',$tags), 5, '');


$arr[] = array(

    objid  => $objid,
    downtimesince  => $downtimesince,
    Coop  => $coop,
    Desi => $des,
    Ipsat => $ipsat,
    Operadora => $operadora,
	Uf => $uf,
	Central => $central



);	

echo ("<pre>");

print_r($arr);

echo ("</pre>");



}







?>

 

 

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Não entendi seu problema. O erro citado ocorre porque você colocou o print_r dentro do foreach. Mas a variável $arr mantem os valores corretamente.

  • +1 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Gemenson Miranda
      Oi pessoal, estou com um problema na minha hospedagem LInux do Godaddy, publiquei meu site, fiz o apontamento correto do banco de dados, mas quando acesso a URL o site me exibe HTTP ERROR 500 exibe realizei a configuração do arquivo .htaccess, alterei as permissões para (755), nada disso resolve... A questão e que sempre que comento as informações de apontamento do banco de dados no arquivo index.php o site carrega normalmente, porem sem conexão com o bando mysql, o que me faz pensar que o erro pode esta relacionado ao banco mysql, porem não consigo visualizar o erro por que a tela fica toda branca e não retorna nada, como resolver esse erro ou ao menos exibir qual erro causa ele?? agradeço!
    • By TheRonaldoStar
      Oii, fala ae pessoal!!
      Alguém pode me ajudar com uma coisa por favor?;
      Seguinte!, eu anteriormente fiz uma pergunta aqui no fórum recorrente a isso, mas eu conseguir uma solução parcial.
      Que era, fazer uma listagem de todos os cadastros e fazer a junção dos cadastros com uma coluna igual, Ou seja existem duas colunas [DE e Para], que recebem o id de quem está recebendo ou que está enviando a mensagem, eu conseguir fazer a tal listagem por grupo mas o problema que estou tendo é: que so faz o agrupamento de as colunas contiver o id por ex: [De = "1" e Para ="2"].
      Atualmente estou usando a codificação deste Jeito:
       
      $sql_2 = $db -> prepare("SELECT * FROM privado WHERE (Para = '$Meu_id') Or (De = '$Meu_id') GROUP BY Para, De DESC"); $sql_2 -> execute(); Esta consulta como pode ver ele busca todos os cadastros que tenha o meu ID ou seja do usuário online!, Após a consulta ele vei obter em um "while" somente o [ Id_De eo Id_Para ] desta forma:
      while($dados_2 = $sql_2 -> fetch(PDO::FETCH_OBJ)){ $Id_De = ($dados_2 -> De); $Id_Para = ($dados_2 -> Para); } Mas em fim eu gostaria de saber como mostrar somente um resultado ou seja o ultimo resultado que tiver o meu ID em ambas colunas [ Id_De ou Id_Para ].
      Antes de vocês me recomendar a função DESC LIMIT 'valor' saiba eu quero que liste todos os usuários que enviou ou recebeu minha mensagem não somente 1 ou seja se eu mandar um mensagem para o usuário 2 e ele me retornar uma mensagem vai mostrar somente o ultimo registro que tenha o meu ID e o id dele.
       
      Atenciosamente,
      ~Ronaldo
       
    • By TheRonaldoStar
      Oi, mais cedo eu fiz um post aqui no site mas um pouco longo creio eu que e mais fácio eu fazer uma pergunta mais direta.
      A pergunta é:
      Como posso fazer agrupamentos de uma tabela através de dois campos cujo os valores são =, mesmo que esteja invertidos?
      EX: [DE = "1"], [PARA = "2"].
      E fazer o agrupamento ou só mostrar o ultimo cadastro mesmo que eles estejam invertidos desta forma?
      EX: [DE = "2"], [PARA = "1"].
       
      Acho que agora com este post fui mais claro, Alguém pode me ajudar por favor??.
      Atenciosamente,
      ~Ronaldo
    • By HigorCrds
      Bom, o que eu consegui até agora foi fazer com que, ao usuário clicar em algum dos botões de paginação (1, 2, 3...) o PHP guarde uma SESSION com o número da página correspondente.
      Segue o código:
       
      <!-- BOTÃO COM O NÚMERO DA PÁGINA --> <button onclick="mudaVar(<?php echo $i; ?>);"> <?php echo $i; ?> </button> <!-- FUNÇÃO PARA GUARDAR SESSION PG --> function mudaVar(valor) { $.ajax({ url:'sessions.php?valor='+valor }); } // GUARDA SESSION PG if(isset($_GET['valor'])){ $_SESSION['pg'] = $_GET['valor']; } Até aí tudo bem, só que o problema é que a SESSION não é alterada naquele momento, só quando eu atualizo a página.
      Como corrigir isso?
    • By Carcleo
      A ideia:
       
      toda e entrada no site, seja com link direto do tipo:
       
      www.site.com.br/pasta1/pasta2/arquivo.php  
      ou normal url amigável
       
      www.site.com.br/categoria/tipo  
      tudo queria que redirecionasse para o index.php da raiz do site.
       
      E que, caso o arquivo ou pasta NÃO existisse, abrisse normalmente a pagina 404.php
       
       
      Tentei de tres formas mas nenhuma dá certo.
       
      Primeira forma
      RewriteEngine On ErrorDocument 400 http://www.sortecard.com.br/index.php ErrorDocument 401 http://www.sortecard.com.br/401.php ErrorDocument 403 http://www.sortecard.com.br/403.php ErrorDocument 404 http://www.sortecard.com.br/404.php ErrorDocument 500 http://www.sortecard.com.br/500.php php_value allow_url_fopen on php_value allow_url_include on php_flag mail_filter 0 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=$1 Segunda forma:
      Options +FollowSymLinks DirectorySlash On RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} \.php$ RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?request=$1 [L] Terceira forma:
      RewriteEngine On ErrorDocument 400 http://www.sortecard.com.br/index.php ErrorDocument 401 http://www.sortecard.com.br/401.php ErrorDocument 403 http://www.sortecard.com.br/403.php ErrorDocument 404 http://www.sortecard.com.br/404.php ErrorDocument 500 http://www.sortecard.com.br/500.php php_value allow_url_fopen on php_value allow_url_include on php_flag mail_filter 0 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteRule ^(.*)$ index.php?page=$1 Problemas:
       
      A) Quando acesso a url diretamente não está redirecionando para o index.
      B) Quando falo que é para redirecionar todos os arquivos ele não me dá os parêmetros. 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.