我得到这个循环到我的foto类里面的listByEvent函数来检索我的db fotos:
while ($fetch_query = mysql_fetch_assoc($get_foto)) {
$this -> idFoto = $fetch_query['idFoto'];
$this -> arquivo = $fetch_query['arquivo'];
$this -> legenda = $fetch_query['legenda'];
$this -> idEvento = $fetch_query['idEvento'];
$this -> curtidas = $fetch_query['curtidas'];
$this -> naocurtidas = $fetch_query['naocurtidas'];
$fotos[] = $this;
}
return $fotos;
然后在我的视图(show.php)中,我调用这样的方法:
$foto = new foto();
$foto -> idEvento = $key -> idEvento;
$fotos = $foto -> listByEvent();
foreach ($fotos as $fotokey) {
//here i proper format the layout
}
但是while循环不能覆盖$ this属性,它总是检索相同的foto。如果我改变fc来调用一个新的obj,就像这样:
while ($fetch_query = mysql_fetch_assoc($get_foto)) {
$jack = new foto();
$jack -> idFoto = $fetch_query['idFoto'];
$jack -> arquivo = $fetch_query['arquivo'];
$jack -> legenda = $fetch_query['legenda'];
$jack -> idEvento = $fetch_query['idEvento'];
$jack -> curtidas = $fetch_query['curtidas'];
$jack -> naocurtidas = $fetch_query['naocurtidas'];
$fotos[] = $jack;
}
return $fotos;
比它有效。任何人都可以解释为什么我不能在while循环上覆盖这些方法?谢谢你的时间
答案 0 :(得分:1)
分配类对象时,不进行复制,只需指定对象的引用即可。因此,在第一个循环中,所有数组元素都引用相同的$this
对象,每次循环时都会对其进行修改。您需要使用new
来创建新对象,以便数组元素是不同的。
答案 1 :(得分:0)
this 指针是一个只能在类,结构或联合类型的非静态成员函数中访问的指针。它指向调用成员函数的对象。 静态成员函数没有此指针。
因此此指针返回相同的值。
因此,您需要创建一个新对象来保存值。这就是它在第二次循环中工作的原因。