@askanim, Я тут) Вот что у меня вышло: PHP: Array ( [0] => Array ( [uniq] => filter_name_1 [name] => Array ( [0] => Мощность ) [value] => Array ( [0] => 25 VA(Вт) [1] => 30 VA(Вт) [2] => 35 VA(Вт) [3] => 25 VA(Вт) [4] => 25 VA(Вт) [5] => 25 VA(Вт) ) ) [1] => Array ( [uniq] => filter_name_2 [name] => Array ( [0] => Обмотка ) [value] => Array ( [0] => медь [1] => алюминий [2] => алюминий [3] => алюминий [4] => алюминий ) ) [2] => Array ( [uniq] => filter_name_3 [name] => Array ( [0] => Сила тока [1] => Вольтаж [2] => Вольтаж [3] => Вольтаж ) [value] => Array ( [0] => 1/5/12А [1] => 12/24/36v [2] => 12/24/36v [3] => 12/24/36v ) ) ) Прошу обратить внимание на повторяющиеся значения, например в мощности 25ВА повторяется много раз. В обмотке "алюминий". Можно ли сделать что бы повторы в этот массив не заносились? И самое главное, там где пересекаются 2 параметра "Вольтаж и Сила тока", Там тоже нужно удалить повторы, но тогда появляется проблема с тем как сопоставить значения к неймам.. --- Добавлено --- @TeslaFeo, мой изначальны вариант все равно был куда страшнее) А в данной ситуации я уверен что сделать идеально - невозможно @askanim Спасибо что потратили время и изобрели хоть какое то решение.
Сюда массив дай. Тока дай его нормально в коде я у себя вставлю потещу. У меня всё адекватно работает и дублёров нет --- Добавлено --- ТЫ не чего не изменял в моих функциях? Иначе возможно у тебя слова алюминий идут с пробелами там... Сейчас погоди --- Добавлено --- А сорян моя логическая ошибка смотри вот функцию prepareGetFilters замени PHP: function prepareGetFilters($inputArray) { $res = []; foreach ($inputArray As $key) { $result = getFilters($key); if (!empty($res)) { $i = 0; $it = 1; foreach ($res As $kk) { $nameKey = 'filter_name_'.$it; foreach ($result As $k) { if ($k['uniq'] == $nameKey) { $err = false; foreach ($res[$i]['name'] As $kkk => $val) { if ($val == $k['name'][0]) { $err = true; } } if ($err === false) $res[$i]['name'][] = $k['name'][0]; $err = false; foreach ($res[$i]['value'] As $kkk => $val) { if ($val == $k['value'][0]) { $err = true; } } if ($err === false) $res[$i]['value'][] = $k['value'][0]; } } $i++; $it++; } }else { $res = $result; } } return $res; } --- Добавлено --- сейчас должно адекватно работать.
@askanim, почти) повторов теперь нет, спасибо) но последняя проблема осталась, вот: PHP: [2] => Array ( [uniq] => filter_name_3 [name] => Array ( [0] => Сила тока [1] => Вольтаж ) [value] => Array ( [0] => 1/5/12А // это сила тока [1] => 12/24/36v // это вольтаж [2] => 2/6/18А // это сила тока [3] => 24/36/48v // это вольтаж ) ) Видишь, в value значения относящиеся к силе тока и вольтажу перемешались, то есть нет не какой связи теперь между name и value. Есть способ сделать что-то вроде: PHP: [2] => Array ( [uniq] => filter_name_3 [name] => Array ( [0] => Сила тока [1] => Вольтаж ) [value] => Array ( [0] => Array ( [0] => 1/5/12А // это сила тока [1] => 2/6/18А // это сила тока ) [1] => Array ( [0] => 12/24/36v // это вольтаж [1] => 24/36/48v // это вольтаж ) ) ) Тогда можно будет просто связать значение name и value по индексам
@TeslaFeo там нужно будет алгоритм изменить слегка который я написал. --- Добавлено --- на него сверху натянуть не оч красиво будет его надо изменять --- Добавлено --- @smartCreate хотя ладно 950 сделаю сейчас. Уже сделано :!
ок, тогда 1000 тебе и 1000 мне итого 2000) --- Добавлено --- блин) я пролетел) --- Добавлено --- походу у ТСа включился мозг) давно пора. после первой функции можно было подхватить направление и сделать самому. программист же ёлки палки
@askanim, @TeslaFeo. Я на самом деле человек не жадный, но Вы очень здорово уже помогли, дальше я действительно могу справится своими силами, нужно просто вникнуть в алгоритм)) за помощь Вам огромное спасибо и + 100500 к карме