Como obter a declaração de um array a partir de um array em PHP PDF Imprimir E-mail
Avaliação do Usuário: / 0
PiorMelhor 
Escrito por Zé Ricardo   
Sáb, 16 de Janeiro de 2010 10:58

Você, alguma vez na vida, precisou escrever uma definição de um array que você tinha em memória no próprio código? Como assim, Zé? Sei lá, por exemplo, na hora de escrever testes no cakephp você muitas vezes precisa definir um array que será utilizado como parâmetro de comparação com os dados obtidas em runtime, right?

Ok, só que aí você tem aqueles arrays enormes que representam os dados obtidos do banco. Você vai ficar digitando todos aqueles campos do array no braço? NOT.

 

Uma solução ingênua para o problema é utilizar um var_dump() ou print_r() para obter uma representação próxima do array e, então, ir ajeitando o texto para que este se torne uma definição, de fato, de um array.

Mas Zé, será que não tem um jeito mais espertinho de se fazer isso? Tem. Graças ao PorKaria, e seu talento nato para POGs, aprendi uma técnica ninja, conhecida apenas por programadores PHP seniors: “use a json_encode() e depois a json_decode(), oras bolas”.

Suponha que você tenha um array enorme do qual você precisa obter a definição para colocar no seu código. O array está armazenado na variável $meusDados e foi obtida através de um find no banco de dados. Um exemplo no CakePHP:

$meusDados = $this -> Dados -> findByName('Zé');

Suponha que o cake vai retornar um array enorme, já que a minha tabela de dados possui 75 campos. Mas você quer testar, você quer gerar fixtures, você vai ficar “ajeitando” o output de um var_dump() da vida pra poder inserir a definição de uma tabela no código? Não!

É tudo muito simples. Tudo que você precisa, na verdade, é da definição em JSON, e não necessariamente da definição em PHP. O primeiro passo, então, é obter a representação em JSON do array:

var_dump(json_encode($meusDados));

Pronto, copie a representação em JSON escrita na tela, faça as alterações necessárias e então use a json_decode() para definir o array no seu código:

$x = json_decode('representação em JSON do array original', true);

E voilá, $x vai conter o seu array para que você o utilize/manipule como bem desejar.

That’s all folks. :)

Leia mais José Ricardo » php

 

Adicionar comentário


Código de segurança
Atualizar