За последние 24 часа нас посетили 64098 программистов и 1742 робота. Сейчас ищут 845 программистов ...

Помогите обработать массив.

Тема в разделе "PHP для новичков", создана пользователем smartCreate, 8 дек 2017.

  1. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    ошибочное предположение.
     
  2. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    @askanim, Я тут) Вот что у меня вышло:

    PHP:
    1. (
    2.     [0] => Array
    3.         (
    4.             [uniq] => filter_name_1
    5.             [name] => Array
    6.                 (
    7.                     [0] => Мощность
    8.                 )
    9.  
    10.             [value] => Array
    11.                 (
    12.                     [0] => 25 VA(Вт)
    13.                     [1] => 30 VA(Вт)
    14.                     [2] => 35 VA(Вт)
    15.                     [3] => 25 VA(Вт)
    16.                     [4] => 25 VA(Вт)
    17.                     [5] => 25 VA(Вт)
    18.                 )
    19.         )
    20.     [1] => Array
    21.         (
    22.             [uniq] => filter_name_2
    23.             [name] => Array
    24.                 (
    25.                     [0] => Обмотка
    26.                 )
    27.             [value] => Array
    28.                 (
    29.                     [0] => медь
    30.                     [1] => алюминий
    31.                     [2] => алюминий
    32.                     [3] => алюминий
    33.                     [4] => алюминий
    34.                 )
    35.         )
    36.     [2] => Array
    37.         (
    38.             [uniq] => filter_name_3
    39.             [name] => Array
    40.                 (
    41.                     [0] => Сила тока
    42.                     [1] => Вольтаж
    43.                     [2] => Вольтаж
    44.                     [3] => Вольтаж
    45.                 )
    46.  
    47.             [value] => Array
    48.                 (
    49.                     [0] => 1/5/12А
    50.                     [1] => 12/24/36v
    51.                     [2] => 12/24/36v
    52.                     [3] => 12/24/36v
    53.                 )
    54.         )
    55. )
    Прошу обратить внимание на повторяющиеся значения, например в мощности 25ВА повторяется много раз. В обмотке "алюминий". Можно ли сделать что бы повторы в этот массив не заносились? И самое главное, там где пересекаются 2 параметра "Вольтаж и Сила тока", Там тоже нужно удалить повторы, но тогда появляется проблема с тем как сопоставить значения к неймам..
    --- Добавлено ---
    @TeslaFeo, мой изначальны вариант все равно был куда страшнее) А в данной ситуации я уверен что сделать идеально - невозможно

    @askanim Спасибо что потратили время и изобрели хоть какое то решение.
     
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Сюда массив дай. Тока дай его нормально в коде я у себя вставлю потещу. У меня всё адекватно работает и дублёров нет
    --- Добавлено ---
    ТЫ не чего не изменял в моих функциях? Иначе возможно у тебя слова алюминий идут с пробелами там... Сейчас погоди
    --- Добавлено ---
    А сорян моя логическая ошибка смотри вот функцию prepareGetFilters замени
    PHP:
    1. function prepareGetFilters($inputArray) {
    2.     $res = [];
    3.     foreach ($inputArray As $key) {
    4.         $result =  getFilters($key);
    5.         if (!empty($res)) {
    6.             $i = 0;
    7.             $it = 1;
    8.             foreach ($res As $kk) {
    9.                 $nameKey = 'filter_name_'.$it;
    10.                 foreach ($result As $k) {
    11.                     if ($k['uniq'] == $nameKey) {
    12.                         $err = false;
    13.                         foreach ($res[$i]['name'] As $kkk => $val) {
    14.                             if ($val == $k['name'][0]) {
    15.                                 $err = true;
    16.                             }
    17.                         }
    18.                         if ($err === false) $res[$i]['name'][] = $k['name'][0];
    19.                         $err = false;
    20.                         foreach ($res[$i]['value'] As $kkk => $val) {
    21.                             if ($val == $k['value'][0]) {
    22.                                 $err = true;
    23.                             }
    24.                         }
    25.                         if ($err === false) $res[$i]['value'][] = $k['value'][0];
    26.                     }
    27.                 }
    28.                 $i++;
    29.                 $it++;
    30.             }
    31.         }else {
    32.             $res = $result;
    33.         }
    34.     }
    35.     return $res;
    36. }
    --- Добавлено ---
    сейчас должно адекватно работать.
     
  4. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    @askanim, почти) повторов теперь нет, спасибо)

    но последняя проблема осталась, вот:
    PHP:
    1. [2] => Array
    2.         (
    3.             [uniq] => filter_name_3
    4.             [name] => Array
    5.                 (
    6.                     [0] => Сила тока
    7.                     [1] => Вольтаж
    8.                 )
    9.             [value] => Array
    10.                 (
    11.                     [0] => 1/5/12А // это сила тока
    12.                     [1] => 12/24/36v // это вольтаж
    13.                     [2] => 2/6/18А // это сила тока
    14.                     [3] => 24/36/48v // это вольтаж
    15.                 )
    16.         )
    Видишь, в value значения относящиеся к силе тока и вольтажу перемешались, то есть нет не какой связи теперь между name и value. Есть способ сделать что-то вроде:

    PHP:
    1. [2] => Array
    2.         (
    3.             [uniq] => filter_name_3
    4.             [name] => Array
    5.                 (
    6.                     [0] => Сила тока
    7.                     [1] => Вольтаж
    8.                 )
    9.             [value] => Array
    10.                 (
    11.                     [0] => Array
    12.                        (
    13.                           [0] => 1/5/12А // это сила тока
    14.                           [1] => 2/6/18А // это сила тока
    15.                        )
    16.                     [1] => Array
    17.                        (
    18.                           [0] => 12/24/36v // это вольтаж
    19.                           [1] => 24/36/48v // это вольтаж
    20.                        )
    21.                 )
    22.         )
    Тогда можно будет просто связать значение name и value по индексам
     
  5. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    ты наглец
     
  6. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @smartCreate 2 000 рублей сделаю.
    --- Добавлено ---
    Плати и фигня вопрос! Реализую.
     
  7. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @TeslaFeo там нужно будет алгоритм изменить слегка который я написал.
    --- Добавлено ---
    на него сверху натянуть не оч красиво будет его надо изменять
    --- Добавлено ---
    @smartCreate хотя ладно 950 сделаю сейчас. :) Уже сделано :!
     
  9. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    ок, тогда 1000 тебе и 1000 мне
    итого 2000)
    --- Добавлено ---
    блин)
    я пролетел)
    --- Добавлено ---
    походу у ТСа включился мозг)
    давно пора.
    после первой функции можно было подхватить направление и сделать самому.
    программист же ёлки палки
     
  10. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    @askanim, @TeslaFeo. Я на самом деле человек не жадный, но Вы очень здорово уже помогли, дальше я действительно могу справится своими силами, нужно просто вникнуть в алгоритм)) за помощь Вам огромное спасибо и + 100500 к карме :)
     
  11. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    на здоровье. приходи еще.
    и можно на ТЫ )
     
  12. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    @TeslaFeo, спасибо) на счет "Можно на ТЫ" - принято)