2012-03-20 3 views
1

Я не вижу дерева для деревьев, пожалуйста, укажите мне в правильном направлении.Как добавить значение к массиву объекта динамически?

У меня есть запрос mysql и извлекаются строки как объекты. Это прекрасно работает. Теперь я хочу заполнить массив объекта значениями из базы данных. Этот объект ($ myobject) имеет несколько массивов (т. Е. $ Myobject-> field_1). Эти массивы содержат (несколько) значений для определенного поля на разных языках, следовательно, это может быть sth. например $ myobject-> field_1 ['en'] [0] = 'значение'. Вот что я пытался сделать:

$query = 'SELECT t.id, t.lang, t.val FROM table t'; 
$result = db_query($query); // custom db layer function 
foreach ($result AS $row) { 
    $fieldname = 'field_'.$row->id; 
    $myobject->$fieldname[$row->lang][] = $row->val; 
} 

Последняя строка не работает. Поскольку я не знаю, сколько значений уже сохранено для языка, я просто хочу добавить ([]) значение в конец массива.

Какую опрятную уловку мне не хватает?

+0

Показать образец '$ result' – Vytautas

+0

В строке 4, у вас есть квадратные скобки, которые Безразлично» t совпадают. Это опечатка в вашем примере здесь, или это в вашем коде? –

+0

@ Zack: Да, это была опечатка. Просто исправил это. – Paul

ответ

1

Вы можете попробовать это:

$query = 'SELECT t.id, t.lang, t.val FROM table t'; 

$result = db_query($query); // custom db layer function 

foreach ($result AS $row) { 
    $fieldname = 'field_'.$row->id; 
    $myobject->{$fieldname}[$row->lang][] = $row->val; 
} 

Обратите внимание на фигурные скобки вокруг $ имя_поля в последней строке

+0

Вот и все. Спасибо, я знал, что это что-то простое, мне действительно нужны несколько выходных. ;) – Paul

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