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.

  
     Pin It  

Arquivado na categoria: PHP, Tutoriais


10 Comentários

  1. É 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! ;)

  2. 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.

  3. 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.

  4. Saudade do tempo da parte de Photoshop do pplware =P

  5. Porque não um cast?

    $objecto = (object)$a;

  6. @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” :)

  7. 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 ;)

  8. 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!

  9. 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 :)

  10. para usar tanto como array e object existe o ArrayObject.
    Não é necessário conversão.

Deixe o seu comentário

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. O autor deste site reserva-se, desde já, o direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.