Я хочу, чтобы иметь возможность обновлять ассоциативный массив внутри объекта на основе ввода функции, но я не понимаю, как это сделать. Вот моя проблема. Скажем, есть этот контейнер данных в моем объекте:PHP: Обновление ассоциативного массива, хотя функция класса?
private $vars = Array
(
['user_info'] = Array
(
['name'] => 'John Doe'
['id'] => 46338945
['email'] => '[email protected]'
['age'] => 35
)
['session_info'] = Array
(
['name'] => 'session_name'
['id'] => 'mGh44Jf0nfNNFmm'
)
)
и у меня есть публичная функция update
изменить эти значения:
public function update($keys, $changeValueTo) {
if (!is_array($keys)) {
$keys = array($keys);
}
nowWhat();
}
В конце концов, я просто хочу, чтобы иметь возможность конвертировать что-то вроде этого
array('user_info', 'name')
в этом:
$this->vars['user_info']['name']
поэтому я могу установить его равным параметру $equalTo
.
Это обычно не проблема, но в этом случае я не знаю схему массива $vars
, поэтому я не могу написать оператор foreach
на основе фиксированного количества ключей. Я также не могу просто сделать $vars
общедоступным, потому что функция должна что-то делать в объекте каждый раз, когда что-то изменяется.
Я обеспокоен тем, что это рекурсивный сценарий, который предполагает использование eval()
. Чтобы вы посоветовали?
Это сработало! Я все еще не понимаю, что значит передавать переменную по ссылке, мне обязательно нужно провести некоторое исследование. Благодаря! – Jonesy