Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde a todos.
Estava com um problema que consegui resolver, mas ainda permanece o "porque???".
Vamos lá...
Meu código estava da seguinte forma:
$vetor = array();
$obj = new Classe();
while ($result = mysql_fetch_array($consulta)) {
$obj->nome = $consulta["nome"];
$vetor[] = $obj;
}
O que estava acontecendo? A partir da segunda iteração o conteúdo do vetor era modificado para o valor corrente que estava sendo atribuído no objeto.
Deveria sair o seguinte:
// primeira iteração
$obj->nome = "João";
// $vetor[0]->nome == Joao
// segunda iteração
$obj->nome = "Maria";
// $vetor[1]->nome == Maria
O que estava acontecendo:
// primeira iteração
$obj->nome = "João";
// $vetor[0]->nome == Joao
// segunda iteração
$obj->nome = "Maria";
// $vetor[0]->nome == Maria
// $vetor[1]->nome == Maria
Em pesquisa vi que teria que instanciar o objeto dentro do laço, ficando abaixo:
$vetor = array();
while ($result = mysql_fetch_array($consulta)) {
$obj = new Classe();
$obj->nome = $consulta["nome"];
$vetor[] = $obj;
}
Minha dúvida é saber o porque que deve ser feito desta maneira e não instanciar o objeto somente uma vez?
Desde já agradeço.
Carregando comentários...