2012-08-30 63 views
3

我已經做了廣泛的搜索一個數組,並發現這一點:改變類變量這是在PHP

&__get() issues, again. Major frustration is afoot

然而,沒有提供的例子實際工作。

我有一個對象,它有一個多維數組的變量。我需要改變該數組中某個鍵的值。

例子:

foreach ($code->files as $index => $value) 
{ 
    if (strcmp($code->files[$index]['id'], $fileid) == 0) 
    {        
     $code->files[$index]['title'] = "Test"; 
     $code->save(); 
    } 
} 

上面的代碼不會產生錯誤:

Notice: Indirect modification of overloaded property CodeDocument::$files has no effect in /var/www/deletefile.php on line 57 

我試過在前面引用的螺紋連接所有的例子,他們沒有工作。他們都會產生上面的錯誤。

我正在使用一個預建類庫(phpillow),但我試着改變__get函數爲& __get,它壓制了上面的錯誤,但是我試圖改變的變量仍然沒有得到新的值。

我不知道我是否正在做這個權利,但我處於完全喪失狀態。這樣做而不將數組放在類變量中需要大量的重構,如果可能的話,我寧願避免重做。

任何幫助非常感謝。

+0

你可以張貼'CodeDocument'的代碼? – xdazz

+0

你可以顯示你的'__set()'函數嗎? – Touki

+0

你不顯示最重要的部分:'__get'是什麼樣的? – Jon

回答

0

這是否工作:

foreach ($code->files as $index => $value) 
{ 
    if (strcmp($value['id'], $fileid) == 0) 
    {        
     $value['title'] = "Test"; 
     $code->save(); 
    } 
} 
+0

它似乎擺脫了我收到的信息,但它仍然沒有改變價值。 – user1635243

+0

我認爲問題可能是'__get'不能真的返回一個引用,因爲返回引用的方法必須用'&'來調用。而不是使用'__get',使用一個普通的方法並用參考語法來調用它。 – Barmar