我有一个循环,我将一个已更新的对象存储到数组中的下一个位置。 PHP存储对象的引用,而不是将对象存储在数组中。因此,在我的循环结束时,我的数组包含许多对该对象的最新版本的引用,这些引用都包含相同的信息。如何在循环的每次迭代中存储对象的实例?
while( $Row = $Query->fetch_object() ) {
$Company->id = $Row->id;
$Company->json = json_decode($Row->json);
$companies[] = $Company;
}
答案 0 :(得分:2)
您可以通过以下任一方法在每次迭代中创建一个新对象:
$newObj = new CompanyClass();
或$newObj = clone $Company;
请记住,PHP执行所有对象属性的浅表副本。任何引用其他变量的属性都将保留引用。
while( $Row = $Query->fetch_object() ) {
$newCompany = clone $Company; //or new CompanyClass();
$newCompany->id = $Row->id;
$newCompany->json = json_decode($Row->json);
$companies[] = $newCompany;
}