2014-02-21 26 views
0

我想在Yii 1.1上创建一个类别树。Yii 1.1和通过引用

我写了这个代码:

$tree=array(); 
$results=Category::model()->findAll(); 

foreach ($results as &$result) 
{ 
    if(empty($result->parent_id)) 
    { 
     $tree[$result->parent_id]=&$result->name; 
    } 
    else 
    { 
     $results[$result->parent_id]['childs'][$result->id]=&$result->name; 
    } 
} 

return $tree; 

我得到我得到这个错误

Indirect modification of overloaded property Category::$name has no effect 

为什么?我该如何解决?

谢谢!

+3

你为什么要存储参考?不需要存储参考。 –

+0

我可以看到一个例子吗?使用一个查询到数据库 – xfg

+0

,只需在'$ results中删除'&,结果为&$ result'和'$ tree [$ result-> parent_id] =&$ result-> name;''results [$ result- > PARENT_ID] [ '的孩子的'] [$ result-> ID] =&$ result->名;' –

回答

0

为了给你一个答案,为什么会出现这种情况(它不是一个特定的Yii问题,但更多的PHP一般): $result->name不是一个实际的变量,而是一个函数调用的结果。它在内部它calls $result->__get('name')

PHP只是试图警告你,它认为你做一些奇怪的事情。 解决方法是将结果分配给一个变量并使用它。我知道,这很烦人。

这就是说:你为什么试图使用参考呢?