2014-02-21 3 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 as & $ result' и' $ tree [$ result-> parent_id] = & $ result-> name; 'и' $ results [$ result- > parent_id] [ 'Чайлдс'] [$ result-> ID] = & $ result-> имя; ' –

ответ

0

Чтобы дать вам ответ, почему это происходит (и это не конкретная проблема Yii, но больше PHP в целом): $result->name - это не фактическая переменная, а результат вызова функции. Внутренне это calls $result->__get('name')

PHP просто пытается предупредить вас, что он думает, что вы делаете что-то странное. Решение состоит в том, чтобы назначить результат переменной и использовать ее вместо этого. Раздражающий, я знаю.

Это, как говорится: почему вы все равно пытаетесь использовать ссылки?

Смежные вопросы