PHP. Создать ключи массива из строки

ЕСТЬ РЕШЕНИЕ
#1 19 марта 2023 в 09:20

Всем привет!

Нужна ваша помощь, не могу сообразить.

Есть массив

  1. $array = [
  2. '4754.text.1.5' => 'value',
  3. '4356.val.15.1' => 'value',
  4. '4454.chec' => 'value',
  5. '4898.icms.2.15.2' => 'value'
  6. ];

Подскажите как создать ключи в новом массиве и записать туда значения из первого?

Пример:

  1. $new_array[4754]['text'][1] = 'value'
#2 19 марта 2023 в 16:09

 Narochnyi, решений точно может быть несколько. Без ссылок (документация) задача, наверно, не решается. Вот мое

  1. $array = [
  2. '4754.text.1.5' => 'value',
  3. '4356.val.15.1' => 'value',
  4. '4454.chec' => 'value',
  5. '4898.icms.2.15.2' => 'value'
  6. ];
  7. $new_array = [];
  8. foreach ($array as $key => $value){
  9. $parts = explode('.', $key);
  10. $a =& $new_array;
  11. foreach ($parts as $part){
  12. $a =& $a[$part];
  13. }
  14. $a = $value;
  15. }
  16. dump($new_array);
Изображение

Решение через while скорее всего будет красивее… Но я не люблю ни ссылки, ни цикл while...

#3 19 марта 2023 в 16:17

 Narochnyi, решений точно может быть несколько. Без ссылок (документация) задача, наверно, не решается. Вот мое

  1. $array = [
  2. '4754.text.1.5' => 'value',
  3. '4356.val.15.1' => 'value',
  4. '4454.chec' => 'value',
  5. '4898.icms.2.15.2' => 'value'
  6. ];
  7. $new_array = [];
  8. foreach ($array as $key => $value){
  9. $parts = explode('.', $key);
  10. $a =& $new_array;
  11. foreach ($parts as $part){
  12. $a =& $a[$part];
  13. }
  14. $a = $value;
  15. }
  16. dump($new_array);
Изображение

Решение через while скорее всего будет красивее… Но я не люблю ни ссылки, ни цикл while...

Zau4man

Спасибо за помощь. Нужно будет почитать подробнее про ссылки)

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.