an ordinary blog — andr3.net

rss feed

my lifestream rss feed

are you tired of this? then return to latest posts

Puxar variáveis de dentro de um Array em php

(there's an english version of this post)

Na noite passada, estava eu a escrever um bocado de código em PHP – é uma nova feature para o blog, muito simples – quando tive que mais uma vez fazer uma query ao servidor MySQL e depois usar o mysql_fetch_array() para ir buscar os dados devolvidos. Alguns de vocês deve usar alguma classe toda pipi para fazer interface com o servidor – e ainda bem que o fazem – mas eu, por alguma razão estranha, prefiro desta forma.

Portanto, fico sempre com um array – que normalmente chamo $raw – com umas quantas chaves e respectivos valores:

Array
(
[id] => 1
[field1] => test
[field2] => another test
)


Para usar esses valores numa string, podemos fazer echo da seguinte forma:

echo "this is the value of field1: " . $raw["field1"];

Ou meter o valor numa variável e usá-la directamente

$field1 = $raw["field1"];
echo "this is the value of field1: $field1";


Ok, mas na maior parte das vezes estamos só a criar variáveis com o nome igual à respectiva chave do array. Foi então que me lembrei de fazer um script muito curto para puxar as variáveis de dentro do array. Também pode ser útil para puxar as variáveis de sessão, mas na verdade podem usar isto em qualquer situação similar.

function pull_vars( $target ) {
foreach( $target as $key => $val ) {
global $$key;
$$key = $val;
}
}


Atenção Isto pode causar conflitos com variáveis que já existam. Tenham cuidado com os nomes das variáveis usadas. Se houve conflitos, podem resolvê-los na query SQL, dando uma alias ao campo em questão. $sql ="select title as ptitle, datetime as dt, (...).

Metam isto num ficheiro qualquer, por exemplo, chamado pull_vars.php. Agora incluam-no no topo de cada página ( require_once("pull_vars.php");) e chamem a função cada vez que quiserem desempacotar as variáveis. Só para isto ficar completo, para chamarem a função basta fazerem:

pull_vars( $raw );


Achei que devia partilhar esta pequena dica, pode ser que ajude alguém. ;)

Comments

↑ top