2015-12-11 2 views
0

В моем классе, у меня есть открытая переменный:Добавления к динамическому переменному переменному массиву

public $full_rows = array("text");

Я хочу, чтобы иметь возможность добавить к этому массиву, например, так:

$form->addarray("full_rows", array("url","name"));

Таким образом, у меня есть эта функция:

public function addarray($arrayname, $array = array()) { 
    array_merge($this->$arrayname, $array);  
} 

За исключением того, что это не влияет на массив full_rows. Почему нет?

Редактировать Благодаря рули для правильного ответа. Оказывается, я забыл, что array_merge возвращает объединенный массив, а не просто делает это. Я думал, что это проблема с переменными переменными (как я никогда раньше их не использовал).

Вот моя последняя функция:

public function addarray($arrayname, $array = array()) { 
    if((isset($this->$arrayname)) && (is_array($array))) { 
     $this->{$arrayname} = array_merge($this->{$arrayname}, $array); 
    } else { 
     return false; 
    } 
} 
+0

'$ форма-> addarray ($ form-> full_rows, массив (" URL "," name ")); – RamRaider

ответ

1

установить значение объединенного массива на ваш $full_rows

public function addarray($arrayname, $array = array()) { 
    $this->$arrayname = array_merge($this->$arrayname, $array);  
} 
+0

А, я напортачил на array_merge. Спасибо! Но можете ли вы сказать мне, почему я не мог написать это: '$ this -> $ arrayname [] =" foo ";'? – Chud37

+1

Aah Я понял это. Это должно быть: '$ this -> {$ arrayname} [] =" foo ";' – Chud37

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