元素数组的值在内部发生变化

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" 值,因为它在内部都是相同的。