разбить и соединить

208
03 марта 2018, 21:16

Есть несколько строк их нужно разбить проверить и соединить

Пример

Характеристики|Регулирование мощности, до|100.0(%)
Характеристики|Тип котла|Пиролизный
Характеристики|Вид топлива|Твердое

Проблема в том что из нескольких таких строк нужно соединить в одну

Пример

Характеристики|Регулирование мощности, до|100.0(%):300 %:600%
Характеристики|Тип котла|Пиролизный:Буржуйский:Обычный
Характеристики|Вид топлива|Твердое:Мягкое:Твердое

Что и как

Характеристики| - всегда одинаково и присутствует в каждой строке Регулирование мощности, до - Название характеристики называются одинаково но могут находится то на 5 строке, а то и на 2 100.0(%) - значение строки всегда разные и нужно собрать и разделить :

Каждый блок строк берем из разных массивов

    $one_post = $_POST['one'];
    $two_post = $_POST['two'];
и так до 10 массивов

Я пытаюсь реализовать так все разбиваю Название характеристики перевожу в ключ потом сравниваю ключи и собираю все значения к ключу и получаю один общий блок.

Answer 1
// Парсим один массив строк
function parseStrings(&$data, $strings) {
  // Пробегаем по всем строкам
  foreach ($strings as $str) {
    // Разбиваем строку по разделителю
    $row = explode('|', $str);
    // Первую часть отбрасываем, вторая будет ключом подмассива
    if (!isset($data[$row[1]]))  // если такого подмассива нет - создаем
      $data[$row[1]] = [];
    // добавляем значение в нужный массив характеристик
    $data[$row[1]][] = $row[2];
  }
}
$strings1 = [
  "Характеристики|Регулирование мощности, до|100.0(%)",
  "Характеристики|Тип котла|Пиролизный"
  "Характеристики|Вид топлива|Твердое"
];
$strings2 = [
  "Характеристики|Регулирование мощности, до|300.0(%)",
  "Характеристики|Тип котла|Обычный"
  "Характеристики|Вид топлива|Мягкое"
];
$data = [];
// Парсим каждый из массивов и собираем все в $data
parseStrings($data, $strings1);
parseStrings($data, $strings2);
$res = [];  // конечный массив строк
// цикл по всем характеристикам.
// $name - название, $vals - массив всех значений
foreach($data as $name => $vals) {
  // Формируем новую строку
  $res[] = 'Характеристики|' . $name . '|' . implode(':', $vals);
}
READ ALSO
Ошибка failed to open stream: No error in *путь к файлу* on line 25

Ошибка failed to open stream: No error in *путь к файлу* on line 25

Делаю рекапчу, подключил все как в видео - уроках, но вылазит ошибка, в чем проблема?

209
Как вычесть два объекта типа DateInterval в PHP?

Как вычесть два объекта типа DateInterval в PHP?

Всем привет! Создаю тайм трекер на PHP, и приходится много работать со временем и датамиСтолкнулся с проблемой с вычитанием дат, если отнимать...

230
не срабатывает условие сравнения дат

не срабатывает условие сравнения дат

сравниваю даты 2018-03-15 04:46:12 2018-04-15 04:46:12 вот так но не отрабатывает

228
Как поставить проверку php (if) и проверять содержимое в корне сайта?

Как поставить проверку php (if) и проверять содержимое в корне сайта?

У меня есть сайт с разными языками рус, en, ua

213