(array) $each; and open

Asked

Viewed 56 times

1

I have an array($all) object($each) and the following foreach:

  foreach ($todos as $cada):

     $produto[] = (array) $cada;

     $produtos[] = array(
           'idProduto' => $cada->getIdProduto(),
           'tipo' => $cada->getTipo(),
           'modelo' => $cada->getModelo(),
           'bandejas' => $cada->getBandejas(),
           'peso' => $cada->getPeso(),
           'prensagem' => $cada->getPrensagem(),
           'precoUnitario' => $cada->getPrecoUnitario(),
           'comprimento' => $cada->getComprimento(),
           'largura' => $cada->getLargura(),
           'cabo' => $cada->getCabo(),
           'ligacao' => $cada->getLigacao(),
           'potencia' => $cada->getPotencia(),
           'cosumo' => $cada->getConsumo(),
           'corrente' => $cada->getCorrente(),
           'disjuntor' => $cada->getDisjuntor(),
           'descricao' => $cada->getDescricao(),
           'estoque' => $cada->getEstoque(),
           'freteGratis' => $cada->getFreteGratis(),
           'bloqueado' => $cada->getBloqueado()
           );   

  endforeach;

I need to convert the arrays $product and products in JSON

Follows the PRINT_R() of both.

That’s the PRINT_R of Array $product:

Array
(
    [0] => Array
        (
            [ProdutosidProduto] => 1
            [Produtostipo] => mp
            [Produtosmodelo] => F540 2 BAN.PNEU. 100 X 60
            [Produtosbandejas] => 2
            [Produtospeso] => 0
            [Produtosprensagem] => 0
            [ProdutosprecoUnitario] => 6500
            [Produtoscomprimento] => 100
            [Produtoslargura] => 60
            [Produtoscabo] => 0
            [Produtosligacao] => n
            [Produtospotencia] => 0
            [Produtosconsumo] => 0
            [Produtoscorrente] => 0
            [Produtosdisjuntor] => 0
            [Produtosdescricao] => 
Valor promocional limitado frete grátis ,para SP ,RJ ,MG ,ES. Os demais será cobrado apenas de SP para sua cidade ,valor de 500,00 ,a ser pago na entrega .



MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
            [Produtosestoque] => 7
            [ProdutosfreteGratis] => s
            [Produtosbloqueado] => n
        )

    [1] => Array
        (
            [ProdutosidProduto] => 2
            [Produtostipo] => mp
            [Produtosmodelo] => F540 2 BAN.PNEU.80X100 A VISTA BOLETO PAGSEGURO
            [Produtosbandejas] => 2
            [Produtospeso] => 190
            [Produtosprensagem] => 300
            [ProdutosprecoUnitario] => 7500
            [Produtoscomprimento] => 70
            [Produtoslargura] => 100
            [Produtoscabo] => 6
            [Produtosligacao] => b
            [Produtospotencia] => 7500
            [Produtosconsumo] => 3
            [Produtoscorrente] => 35
            [Produtosdisjuntor] => 40
            [Produtosdescricao] => MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
www.topuhrens.de




            [Produtosestoque] => 8
            [ProdutosfreteGratis] => n
            [Produtosbloqueado] => n
        )

That’s the PRINT_R of Array $products:

Array
(
    [0] => Array
        (
            [idProduto] => 1
            [tipo] => mp
            [modelo] => F540 2 BAN.PNEU. 100 X 60
            [bandejas] => 2
            [peso] => 0
            [prensagem] => 0
            [precoUnitario] => 6500
            [comprimento] => 100
            [largura] => 60
            [cabo] => 0
            [ligacao] => n
            [potencia] => 0
            [cosumo] => 0
            [corrente] => 0
            [disjuntor] => 0
            [descricao] => 
Valor promocional limitado frete grátis ,para SP ,RJ ,MG ,ES. Os demais será cobrado apenas de SP para sua cidade ,valor de 500,00 ,a ser pago na entrega .



MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
            [estoque] => 7
            [freteGratis] => s
            [bloqueado] => n
        )

    [1] => Array
        (
            [idProduto] => 2
            [tipo] => mp
            [modelo] => F540 2 BAN.PNEU.80X100 A VISTA BOLETO PAGSEGURO
            [bandejas] => 2
            [peso] => 190
            [prensagem] => 300
            [precoUnitario] => 7500
            [comprimento] => 70
            [largura] => 100
            [cabo] => 6
            [ligacao] => b
            [potencia] => 7500
            [cosumo] => 3
            [corrente] => 35
            [disjuntor] => 40
            [descricao] => MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
www.topuhrens.de




            [estoque] => 8
            [freteGratis] => n
            [bloqueado] => n
        )

I’m trying like this

  var res1 =  Array(); 
  res1 = <?php echo json_encode($produto); ?>;
  document.write(res1[0]["ProdutosidProduto"])

  var res2 =  Array();
  res2 = <?php echo json_encode($produtos); ?>;
  document.write(res2[0]["idProduto"])  

in the JS, the res2 comes out perfect. But the res1 sai undefined

Where am I going wrong?

Obs.: PRINT_R() output from the database search output: Here I put only 2 exits not to get big!

Array
(
    [0] => Produtos Object
        (
            [idProduto:Produtos:private] => 1
            [tipo:Produtos:private] => mp
            [modelo:Produtos:private] => F540 2 BAN.PNEU. 100 X 60
            [bandejas:Produtos:private] => 2
            [peso:Produtos:private] => 0
            [prensagem:Produtos:private] => 0
            [precoUnitario:Produtos:private] => 6500
            [comprimento:Produtos:private] => 100
            [largura:Produtos:private] => 60
            [cabo:Produtos:private] => 0
            [ligacao:Produtos:private] => n
            [potencia:Produtos:private] => 0
            [consumo:Produtos:private] => 0
            [corrente:Produtos:private] => 0
            [disjuntor:Produtos:private] => 0
            [descricao:Produtos:private] => 
Valor promocional limitado frete grátis ,para SP ,RJ ,MG ,ES. Os demais será cobrado apenas de SP para sua cidade ,valor de 500,00 ,a ser pago na entrega .



MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
            [estoque:Produtos:private] => 7
            [freteGratis:Produtos:private] => s
            [bloqueado:Produtos:private] => n
        )

    [1] => Produtos Object
        (
            [idProduto:Produtos:private] => 2
            [tipo:Produtos:private] => mp
            [modelo:Produtos:private] => F540 2 BAN.PNEU.80X100 A VISTA BOLETO PAGSEGURO
            [bandejas:Produtos:private] => 2
            [peso:Produtos:private] => 190
            [prensagem:Produtos:private] => 300
            [precoUnitario:Produtos:private] => 7500
            [comprimento:Produtos:private] => 70
            [largura:Produtos:private] => 100
            [cabo:Produtos:private] => 6
            [ligacao:Produtos:private] => b
            [potencia:Produtos:private] => 7500
            [consumo:Produtos:private] => 3
            [corrente:Produtos:private] => 35
            [disjuntor:Produtos:private] => 40
            [descricao:Produtos:private] => MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
www.topuhrens.de




            [estoque:Produtos:private] => 8
            [freteGratis:Produtos:private] => n
            [bloqueado:Produtos:private] => n
        )

Here is the generation of the Object Array:

  $todos = $produtosDao->pesquisaProdutos(); 

  foreach ($todos as $cada):

     $produto[] = (array) $cada; //cada um $cada é um objeto

  endforeach;
  • You are using the same name for the two arrays in JS?

  • it wasn’t just time to stick here on the question. I’ll pack

  • Go to the page source code and see if the res1 line is something like this: res1 = [{"ProdutosidProduto":1,...];

  • res1 = [{" u0000Products u0000idProduct":"1"," u0000Products u0000type":"mp",...........

  • Try to replace those u0000: res1 = <?php echo str_replace("\u0000", "", json_encode($produto)); ?>;

  • So, it worked! But what a nonsense! Strange these characters only when converting to JSON

Show 1 more comment

1 answer

1

This documentation informs:

If the source data contains control characters, the clause FOR JSON will encode in the JSON output in the format \u<code>, as shown in the table below.

In your case, something like this is happening and when coding for JSON, it is replacing with \u0000.

You can delete these characters by replacing them in JSON:

res1 = <?php echo str_replace("\u0000", "", json_encode($produto)); ?>;

This question in Soen has other information regarding \u0000.

  • No. No. It’s a very simple SQL and I’m doing json_encode() in the output of this Query. I put at the end of the question the PRINT_R() output of the return of the query to the bank before turning into JSON

  • I know. This u0000 code is a null hexadecimal and may not appear in print, but in the JSON conversion it appears. That is, somewhere along the path between the database and the conversion to JSON is being inserted this, and I suspect it is in the part where vc creates the array.

  • I added at the end of the question the shape I’m using to generate

  • Yes I saw it. I think somewhere there is generating this character.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.