元素数组的值在内部发生变化
Value of an element array changing inside
我有一个 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);
数组中所有对象的属性 COD值为9,像这样:
Array
(
[0] => MyClass Object
(
[Cod:MyClass:private] => 9
)
...
[0] => MyClass Object
(
[Cod:MyClass:private] => 9
)
)
而我想要的是 Cod 属性 中的序号。我不知道发生了什么,有些东西是通过引用传递的?
在这种情况下我不能使用 $i 变量。
你需要
for(...) {
$temp = new MyClass();
$temp->setCod($i);
$array[] = $temp;
}
每次迭代都会创建一个新的独立对象。否则你每次都会推送对 SAME 对象的引用,然后在内部产生相同的 "cod" 值,因为它在内部都是相同的。
我有一个 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);
数组中所有对象的属性 COD值为9,像这样:
Array
(
[0] => MyClass Object
(
[Cod:MyClass:private] => 9
)
...
[0] => MyClass Object
(
[Cod:MyClass:private] => 9
)
)
而我想要的是 Cod 属性 中的序号。我不知道发生了什么,有些东西是通过引用传递的?
在这种情况下我不能使用 $i 变量。
你需要
for(...) {
$temp = new MyClass();
$temp->setCod($i);
$array[] = $temp;
}
每次迭代都会创建一个新的独立对象。否则你每次都会推送对 SAME 对象的引用,然后在内部产生相同的 "cod" 值,因为它在内部都是相同的。