0

Extraindo variáveis a partir de arrays com a função extract()

criado por Edson Porto em 14/07/2007 7:48am
O PHP é uma linguagem muito bem elaborada, além da qualidade que todos conhecemos ele dispõe de muitos recursos que auxiliam muito a vida do programador, extract() é um deles.

Imagine a seguinte situação:

<?php
$sql = "SELECT * FROM noticias";
$resultado = mysql_query($sql);

while ($linha = mysql_fetch_array($resultado)){
    // para facilitar nossa vida mais adiante é claro 
    // que vamos querer colocar os valores retornados
    // em variáveis simples:
    $id = $linha['id'];
    $data = $linha['data'];
    $cat = $linha['cat'];
    $fonte = $linha['fonte'];
    $titulo = $linha['titulo'];
    $status = $linha['status'];
    $sumario = $linha['sumario'];

    echo $titulo;
    echo $sumario;
    // ...
}
?>

É exatamente nesse ponto que o extract() mostra a que veio. Veja:

<?php
$sql = "SELECT * FROM noticias";
$resultado = mysql_query($sql);

while ($linha = mysql_fetch_array($resultado)){
    ectract($linha);

    echo $titulo;
    echo $sumario;
    // ...
}
?>

Melhorou bastante, não é mesmo? Mas não pára por aí. Esta função aceita mais dois parâmetros que podem ajudar muito. Veremos mais detalhes na próxima página.

Comentários:

Mostrando 1 - 7 de 7 comentários
Felipe disse:
Puxa vida... vc me fez economizar umas 50 linhas de cod. Vlw mesmo cara !
21/09/2010 4:43pm (~6 anos atrás)

SALVOU MINHA VIDA =]
18/08/2007 6:28pm (~9 anos atrás)

Iuri Neumann disse:
muito maneiro... valeu... vai ajudar bastante mesmo...
26/07/2007 9:26am (~9 anos atrás)

Muito bom Edson, apenas uma coisa com relação ao seu último comentário.. Para esta função funcionar com arrays de índices numéricos basta adicionar um prefixo com os parâmetros da própria função.. ex:

<?php

$a = array(1 => 'a', 2 => 'b', 3 => 'c');
extract($a, EXTR_PREFIX_ALL, 'n');
echo $n_1, $n_2, $n_3; // Imprime abc

?>

O fato de utilizar a função para este tipo de índice sem o prefixo não é permitido pois no PHP não são permitidas variáveis que se iniciam com número... adicione o prefixo e pronto!

Abraços!
26/07/2007 4:35am (~9 anos atrás)

=]
17/07/2007 3:30pm (~9 anos atrás)

Diego Hellas disse:
O Anderson falou tudo... simples e pratico.. mas que muita gente não conhece..

Abraços!
16/07/2007 10:50am (~9 anos atrás)

Simples e ùTil ;D
Obrg
15/07/2007 9:20pm (~9 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)