内部更改元素数组的值

时间:2016-09-13 15:17:44

标签: php arrays pass-by-reference

我有一个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变量。

1 个答案:

答案 0 :(得分:0)

你需要

for(...) {
    $temp = new MyClass();
    $temp->setCod($i);
    $array[] = $temp;
}

在每次迭代时创建一个新的独立对象。否则,您每次都会推送对SAME对象的引用,然后在内部生成相同的“cod”值,因为它是内部的所有相同内容。