Всем привет! Такой вопрос: В цикле, в многомерный массив должны добавляться данные. Проблема в том, что вложенность в массиве может быть разная и имена ключей приходят из функции. Если бы был один ключ, то и проблем не было бы. Можно было бы написать: PHP: foreach($arr as $data) { $key = $this->getKey(); $newArr[$key] = $data; } Но ключ может быть как один, так и пять и десять. Вопрос в том, в каком виде вернуть ключи из функции, чтобы можно было из вставить в массив. Чувствую, что где-то туплю. 16 часов уже за компом и видимо башка совсем не варит
key может быть либо типа integer, либо типа string. value может быть любого типа. https://www.php.net/manual/ru/language.types.array.php --- Добавлено --- еще шапка не соответствует с текстом == вода
ТС хочет преобразовывать строку вида key,key1,key2,key3 в ключи многомерного массива. Нормальная шапка.
Да типы ключей это понятно. Мне нужно данные приходящие из функции преобразовать в индекс. Примерно так: PHP: $array = []; $path = getPath(); //$path = (string) "key,1,foo,2,3" //строку $path нужно конвертировать в ключи чтобы получилось так $array['key'][1]['foo'][2][3] = "Hello, World!";
Спасибо. Я до этого пробовал сделать при помощи ссылок (указателей), но какая-то ерунда получалась. А по Вашему примеру сделал и всё заработало. Вот такая функция получилась: PHP: public function getArray() { $result = array();//результирующий массив $path = $this->getPath();//получаем массив ключей $tmp = &$result;//создаем временную переменную с ссылкой на результирующий массив. Этого можно не делать, но так как у меня функция более сложная, то такая переменная мне необходима. В данной функции её можно убрать. foreach($path as $key) {//перебираем массив с ключами $tmp = &$tmp[$key];//добавляем ссылку на ключ } $tmp = "Привет, Мир!";//записываем данные return $result;//возвращаем готовый массив }