Задать вопрос
Slash-Zn
@Slash-Zn

Как составить из строки элемент массива?

Здравствуйте.
Стоит задача, составить из получаемой строки элемент массива. Допустим, есть такой массив:
$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 . '\']';
}

Но: "Array to string conversion in". Возможно, есть какая то функция, что как раз делает то, что мне надо?
Подскажите, пожалуйста, как можно составить из строки элемент массива?
Спасибо.
  • Вопрос задан
  • 28 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
liaFcipE
@liaFcipE
<?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"
    }
  }
}
*/


Как воображение вообще дошло до '[\'' . $v . '\']'?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы