2012-08-30 34 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