Ir para conteúdo

Arquivado

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

uoquisala

Retirar virgula do ultimo registro com foreach

Recommended Posts

Boa noite fiz esse código para pegar algumas informações escolhidas de dentro de um xml de Nfe e gravo em formato json. Mais no último foreach onde pego os itens preciso eliminar a vírgula do ultimo registro, ja tentei várias maneiras e não consegui!

 

<?php
function gravar($texto){
    $arquivo = "final.json";
    $fp = fopen($arquivo, "a+");
    fwrite($fp, $texto);
    fclose($fp);
}
$xml = simplexml_load_file('1nfe.xml') or die("Não consegui abrir o XML"); 

foreach($xml->NFe as $NFe)
{
    foreach($xml->NFe->infNFe as $infNFe)
    {
        foreach($xml->NFe->infNFe->ide as $ide)
        {
            $numeroNF = $ide->nNF;
            $serie = $ide->serie;
		 
			foreach($xml->NFe->infNFe->dest as $dest)
            {
				$CNPJ = $dest->CNPJ;
                $xNome = $dest->xNome;
			
                foreach($xml->NFe->infNFe->dest->enderDest as $enderDest)
                {
                    $xLgr = $enderDest->xLgr;
                    $xNro = $enderDest->nro;
                    $xBairro = $enderDest->xBairro;
                    $xMun = $enderDest->xMun;
                    
gravar("{\"Nota\":{\"$numeroNF\":{\"Entrega\":{\"Nº Nota\":$numeroNF,\"Serie\":$serie,\"CNPJ\":\"$CNPJ\",\"Cliente\":\"$xNome\",\"Endereço\":\"$xLgr\",\"Nº\":$xNro,\"Bairro\":\"$xBairro\",\"Município\":\"$xMun\"}, ");
gravar("\"itens\":{");
					
					foreach($xml->NFe->infNFe->det as $det){
					$cProd = $det->prod->cProd;
                    $xProd = $det->prod->xProd;
                    $uCom = $det->prod->uCom;
                    $qCom = $det->prod->qCom;
gravar("\"$cProd\" : {");
gravar("\"Descricao\":\"$xProd\",\"Tipo\":\"$uCom\",\"Quantidade\":$qCom}, "); // Eliminar essa ultima virgula, mais so do ultimo registro!.
					       
				   }
					 
                }
            }
			
        }
    }
}

gravar("},");
gravar("\"motorista\":\"Marcelo guedes\"}}} ");
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 minutos atrás, Guilherme Luiz disse:

str_replate
preg_replace

 

já tentou com essas funções?

 

Não consegui fazer já que a informação e logo gravada no arquivo !, pq teria que retirar so da ultima linha, o maximo que cnsegui foi tirar de todas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por clovis.sardinha
      Estou em um impasse pois sei pouco de javascript. Estou fazendo um autocomplete com CI4 e Javascript.
      Consigo gerar, através do controllers/model do CI4 um arquivo em json, mas não consigo retorná-lo para o javascript para poder mostrar as opções para consulta. 
      O console.log mostra que estou obtendo o  json() { [native code] }.
      Segue os dois arquivos para ver se alguém me ajuda.
      //arquivo cidade.js async function carregar_cidade(valor) { if (valor.length >= 3) { //console.log("Pesquisar:" + valor); const dados = fetch('Testes/?cidade='+valor, { method: "get", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }); const resposta = (await dados).json; console.log(resposta); var html = "<ul class='list-group position-fixed'>"; html += "<li class='list-group-item'>" + resposta['cid_nome'] + "</li>"; html += "</ul>"; } } <?php //arquivo Testes.php namespace App\Controllers; use App\Models\CidadeModel; /** NÃO MANDAR PARA O SERVIDOR - APENAS TESTES DE FUNÇÕES E OUTROS ELEMENTOS DO CI4 */ class Testes extends BaseController{ protected $tbCidades; public function __construct(){ $this->tbCidades = new CidadeModel(); } public function index(){ $request = \Config\Services::request(); $client = \Config\Services::curlrequest(); $cidades=[]; if($get=$request->getGet()){ $cities=$get['cidade']; $cidadeFiltrada=$this->tbCidades->getCidByName($cities); $cidades= json_encode($cidadeFiltrada); //dd($cidades); } echo view('Testes/testes'); } public function salvar(){ $request = \Config\Services::request(); if($post=$request->getPost()){ dd($post); } } } <!doctype html> <html lang="pt-br"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <title>Autocomplete</title> </head> <body> <div class="container"> <h1 class="mt-4 mb-4">Formulário</h1> <form class="row g-3"> <div class="col-12"> <label for="cidade" class="form-label">Cidade</label> <input type="text" name="cidade" class="form-control" id="cidade" placeholder="Pesquisar cidade" onkeyup="carregar_cidade(this.value)"> </div> <span ></span> </form> </div> <!-- Optional JavaScript; choose one of the two! --> <!-- Option 1: Bootstrap Bundle with Popper --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> <script src="assets/js/cidade.js"></script> </body> </html>
    • Por FabianoSouza
      Olá pessoal.
      Eu já utilizo o FOR JSON PATH para retornar o o resultado de uma consulta com JSON. Isso eu já sei fazer.
       
      O que preciso é criar uma função que receba um SELECT como parâmetro e retorne o resultado desse SELECT já formatado como JSON.
      Estou tentando isso, mas sem sucesso.
       
      A function dbo.fn_retornaJsonPath :
      (@String NVARCHAR(MAX)) RETURNS NVARCHAR(MAX) AS BEGIN BEGIN IF @String <> NULL SET @String = (SELECT @String AS jsonPath FOR JSON PATH) END BEGIN IF @String IS NULL SET @String = '[]' END RETURN @String END Forma de executar:
      SET @sql = 'SELECT ' SET @sql = @sql + ' dbo.fn_retornaJsonPath ((SELECT TT.tema FROM dbo.tabela AS TT WHERE TT.cd = CTT.id)) AS ''temas'' ' SET @sql = @sql + ' FROM dbo.minhaTab AS CTT ' EXEC(@sql) Mas não está rolando....
    • Por Willian Simione
      Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez

    • Por Giovanird
      Tenho uma tabela com a coluna média (valor decimal) .
       
      cod | media | cod_sala 1 1,98 5 2 2,34 2 3 1,32 5 4 2,51 3 5 1,65 1 6 2,78 5 7 4,95 4 8 0,75 4 9 1,23 1 10 1,63 2 11 1,55 3 Preciso no select MYSQL ou dentro do foreach multiplicar os valores do campo média, de acordo com o fitro por cod_sala
      Exemplo pelo cod_sala: 5
      Sendo o resultdo final: 1,98 * 1,32 * 2,78 = 7,26

      Desde já agradeço!
    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

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