2009-08-25 5 views
0

でオブジェクトを複製、私はこのコードを持っている:値でオブジェクトをコピーする方法/ PHP 5

foreach ($this->configObjects as $k=>$object) 
{ 
    $configObject=$object; 

    //Here I will make a lot of changes to $configObject, however 
    // I want all those changes to be kept only to the local copy of $configObject, 
    // So the next time this foreach loop is run $this->configObjects array will contain 
    // a clean slate of configObject objects which don't have any traces of any 
    // earlier changes that were made to them 
} 

は、どのように私はこれを達成することができますか?

答えて

6

よく、あなたはただcloneあなたのオブジェクト。

1

コピーコンストラクタを使用します。

0

質問1:defualtによる各ループのために、あなたの '$ k => $ object'に値のローカルコピーを作成する必要があります。 '&'とすると、値ではなく参照で渡します。 Manual

質問2:オブジェクトをvar_dumpできますか? foreach内のオブジェクトを配列や文字列にキャストします。var_dumpにそのような文字列がある場合は、文字列のメソッドを呼び出しています。

0

クローンコンストラクトを使用するか、オブジェクトをループしてセカンダリに割り当てます。

0

foreachループ内のIterableのメンバーを変更できないため、クローンを作成する必要はありません。したがって、あなたが何かをするとき

$configObject->name = "whatever"; 

デフォルトでは、$ this-> configObjectsに影響しません。 PHP pageから

引用:

注:配列が参照されていない限り、foreachのは、指定された配列はなく、アレイ自体のコピーで動作します。

+0

これはphp5にも該当するかどうかわかりません –

関連する問題