$arr = [
'k1' => [
'k2' => [
'k3' => [
'k4' => 'v'
]
]
]
];
k1/k2/k3
$arr['k1']['k2']['k3']
$array = explode('/', $s);
$str = null;
foreach ($array as $k => $v)
{
$str .= '[\'' . $v . '\']';
}
<?php
$string = "k1/k2/k3";
$keys = explode('/', $string);
$arr = [];
$current = &$arr;
foreach ($keys as $key) {
$current = &$current[$key];
}
$current = "last nested item";
var_dump($arr);
/*
array(1) {
["k1"]=>
array(1) {
["k2"]=>
array(1) {
["k3"]=>
&string(16) "last nested item"
}
}
}
*/
<?php
function getArrayValueByPath($array, $path, $separator = "/")
{
// Разбиваем путь на ключи
$keys = explode($separator, $path);
// Текущий уровень массива - начинаем с корня
$current = $array;
foreach ($keys as $key) {
// Если ключа нет в массиве, то выбрасываем исключение
if (!isset($current[$key])) {
throw new \Exception(
"Ключ $key не найден в массиве по адресу '$path'"
);
}
// Переходим к следующему уровню вложенности массива
$current = $current[$key];
}
// Возвращаем значение по заданному пути
return $current;
}
// Использование функции:
$arr = [
"k1" => [
"k2" => [
"k3" => [
"k4" => "v",
],
],
],
];
$result = getArrayValueByPath($arr, "k1/k2/k3");
var_dump($result);
/** Результат выполнения:
array(1) {
["k4"]=>
string(1) "v"
}
*/