我有一个PHP应用程序,它包含以下代码:
$cod = 0;
$array = array();
$myObj = new MyClass();
for($i = 0; $i < 10; $i++){
$myObj->setCod($cod);
array_push($array, $myObj);
$cod++;
}
print_r($array);
数组中的所有对象都使用值为9的属性COD,如下所示:
Array
(
[0] => MyClass Object
(
[Cod:MyClass:private] => 9
)
...
[0] => MyClass Object
(
[Cod:MyClass:private] => 9
)
)
我想要的是Cod属性中的序列号。我不知道发生了什么,通过引用传递了什么?
在这种情况下,我无法使用$ i变量。
答案 0 :(得分:0)
你需要
for(...) {
$temp = new MyClass();
$temp->setCod($i);
$array[] = $temp;
}
在每次迭代时创建一个新的独立对象。否则,您每次都会推送对SAME对象的引用,然后在内部生成相同的“cod”值,因为它是内部的所有相同内容。