PHP é à quinta-feira – Converter um Array num Object
Boas,
Após alguns meses parada, vou tentar devolver vida a esta rubrica, original do Pedro Pinto, mas com uma ideologia diferente.
Nesta rubrica vou falar pouco (à parte desta “primeira”), e vou-vos deixar funções que me são muito úteis no dia-a-dia, que penso que poderão ser também para vocês.
Esta rubrica não será mais destinada a quem quer aprender a programar, porque para aprender a programar têm de pegar e perceber primeiro algoritmia, só depois passar para uma linguagem de programação. Será sim destinada a quem já sabe e consegue programar em PHP e deseja/necessita/é útil ter umas funções e/ou classes (simples ou complexas) “gerais” que se consigam utilizar nos mais diversos projectos.
Todo o código que eu colocar nesta rubrica foi desenvolvido por mim (caso contrário estará explícito no código) e como tal, desde que seja eu o autor, dou autorização para usarem para fins pessoais e comerciais, sem qualquer limitação (com uma referência para mim ficaria obviamente agradecido, mas não é obrigatório).
Converter um Array num Object e vice-versa
Hoje trago-vos duas funções que para mim me foram muito úteis a desenvolver uma classe que mais tarde divulgarei nesta rubrica, para trabalhar com MySQL.
function convertArrayToObject($array) { $object = new stdClass(); if (is_array($array) && count($array) > 0) { foreach ($array as $name=>$value) { $name = strtolower(trim($name)); if (!empty($name)) { $object->$name = $value; } } } return $object; }
function convertObjectToArray($object) { $array = array(); if (is_object($object)) { $array = get_object_vars($object); } return $array; } ?>
Modo de utilização:
Converter Array $a para Object $o
$a = array ( 'index_0' => 'value_0', 'index_1' => 'value_1' ); $o = convertArrayToObject($a); //-- Agora podem usar o $o desta forma: echo $o->index_0;//-- Imprime 'value_0' ?>
Converter Object $o para Array $a
$o = new stdClass(); $o->index_0 = 'value_0'; $o->index_1 = 'value_1'; $a = convertObjectToArray($o); //-- Agora podem usar o $a desta forma: echo $a['index_0'];//-- Imprime 'value_0' ?>
Qualquer dúvida ou sugestão, estão completamente à vontade.
Este artigo tem mais de um ano
É com grande agrado que vejo de volta a rubrica PHP, ainda por cima orientada para quem já trabalha com esta linguagem.
Parabéns. Dá-lhe gás Bruno! 😉
Bom Post ! 😉
Programação é a minha vida, não tanto em PHP mas noutras linguagens, mas quando faço desenvolvimento web em determinados projectos recorro sempre a este site: http://pt.php.net/tut.php para mim, com muitos bons exemplos que servem de base a qualquer função que se deseje realizar em PHP.
Cumprimentos.
Gostei da ideia, mas era mais fixe começar pelas coisas mais básicas para quem não soube-se nd (como eu) começar a entender.
Saudade do tempo da parte de Photoshop do pplware =P
Porque não um cast?
$objecto = (object)$a;
@Abel Figueiredo
Não funciona sempre da forma esperada, e os atributos de um objecto são case-sensitive, pelo que usando o cast terias de ter em conta o nome do atributo com case-sensitive.
Também pode retornar um erro, enquanto que com a função retorna um array ou objecto vazio.
No entanto, essa é uma das muitas opções que há para fazer isto. A que expliquei é uma. 🙂
@atduarte
O mais que te posso dizer é que deverias comprar um livro de php ou fazer download de um ebook para aprender o básico do PHP, mas antes tens de saber algoritmia, e para isso não é fácil ensinar via “tutoriais” 🙂
Ainda não era do tempo em que decorria a rubrica “PHP é à quinta-feira”, mas já tinha vasculhado nos arquivos e até tinha gostado do que vi. No entanto, nunca achei os tutoriais aqui explicados dirigidos para utilizadores inexperientes, mas sim avançados.
Pequenas funções interessantes como esta, dicas de programação segura e optimizada, espero continuar a ver desenvolvimentos nesta secção 😉
PHP à quinta! Seja bem vinda de volta 🙂
Estou curioso para ver a class para trabalhar com MySQL! Será que valeu mesmo a pena desenvolveres uma class de raiz, existindo tantas excelentes disponiveis no PHPClasses? Espero para ver 🙂
Obrigado por ressuscitares esta rubrica e continua com bons posts sobre PHP!
Programar também é a minha vida mas nunca mexi em PHP mas era algo que gostava de aprender.. Pode ser que um dia isto me possa a vir dar muito jeito 🙂
para usar tanto como array e object existe o ArrayObject.
Não é necessário conversão.