Я должен реализовать сеттер в PHP, который позволяет мне указывать ключ или субключ для массива (цели), передавая имя как значение, разделенное точками-ключами.
Учитывая следующий код:
$arr = array('a' => 1,
'b' => array(
'y' => 2,
'x' => array('z' => 5, 'w' => 'abc')
),
'c' => null);
$key = 'b.x.z';
$path = explode('.', $key);
Из значения $key
я хочу получить значение 5 из $arr['b']['x']['z']
.
Теперь, учитывая значение переменной $key
и другое значение $arr
(с разной глубиной).
Как я могу установить значение элемента, на который ссылается $key
?
Для getter get()
я написал этот код:
public static function get($name, $default = null)
{
$setting_path = explode('.', $name);
$val = $this->settings;
foreach ($setting_path as $key) {
if(array_key_exists($key, $val)) {
$val = $val[$key];
} else {
$val = $default;
break;
}
}
return $val;
}
Написать установщик сложнее, потому что мне удалось найти нужный элемент (из $key
), но я не могу установить значение в исходном массиве, и я не знаю, как указать ключи одновременно.
Должен ли я использовать какой-то возврат? Или я могу избежать этого?