Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2023, 10:55   #1
alexsun7
 
Регистрация: 14.01.2023
Сообщений: 4
По умолчанию Разделение на уровни вложенности в PHP

Подскажите, пожалуйста, можно ли разделить на уровни вложенности строку и каждому уровню вложенности задать процент (где между фигурной скобкой и прямой чертой идет значение).

Например, такая строка: { 1 уровень - 1 | 1 уровень - 2 { 2 уровень - 1 | 2 уровень - 2 } }

Чтобы в результате получилась строка:

{ 50%: 1 уровень - 1 | 50%: 1 уровень - 2 { 25%: 2 уровень - 1 | 25%: 2 уровень - 2 } }

Примерно по такому принципу. Не только на 2 уровень, но и на более глубокие уровни вложенности.
alexsun7 вне форума Ответить с цитированием
Старый 17.04.2023, 13:03   #2
Agency
Пользователь
 
Регистрация: 07.10.2017
Сообщений: 99
По умолчанию

можно, почему нельзя, надо написать алгоритм
я бы сначала разделил на блоки по вложенности, а потом заново собрал..
Agency вне форума Ответить с цитированием
Старый 17.04.2023, 14:13   #3
alexsun7
 
Регистрация: 14.01.2023
Сообщений: 4
По умолчанию

Проще говоря, как бы разделить эту строку по "|", но чтобы оно было вне фигурных скобок.
alexsun7 вне форума Ответить с цитированием
Старый 17.04.2023, 15:16   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

https://www.php.net/manual/ru/function.explode.php
macomics вне форума Ответить с цитированием
Старый 17.04.2023, 16:22   #5
alexsun7
 
Регистрация: 14.01.2023
Сообщений: 4
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
В таком случае разделение будет происходить и внутри фигурных скобок.
alexsun7 вне форума Ответить с цитированием
Старый 17.04.2023, 17:22   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Так поделите начала по фигурным скобкам ('{'), потом каждый элемент массива поделите по '}' формируя дерево из вложенных элементов. Потом пройдитесь по дереву и выполните explode по '|'. Для каждого элемента массива добавьте нужный %. Далее implode все можно обратно собрать в строку
macomics вне форума Ответить с цитированием
Старый 17.04.2023, 21:13   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Можно применить рекурсию. Заводим счетчик числа скобок, если открывающая, то +1, если закрывающая, то -1. Как только счетчик обнулился, значит вы выдернули последовательность в скобках, при этом все внутренние скобки сохранены. Эту последовательность раскрываем рекурсивно, то есть делаем тоже самое, что описано с самого начала.
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить уровни в существующую структуру Евгений Таб Microsoft Office Excel 0 26.05.2017 10:25
Уровни отладки RAFA91 Общие вопросы C/C++ 1 16.06.2015 23:41
уровни в БД Deniska12 Помощь студентам 1 21.03.2012 12:08
уровни Deniska12 PHP 1 21.03.2012 11:56
Уровни доступа linux Hemul PHP 0 24.08.2011 17:33