За последние 24 часа нас посетили 73125 программистов и 3033 робота. Сейчас ищут 1479 программистов ...

удаление повторяющихся масивов

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

  1. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Есть массив mas_prod в нем есть элементы отличаются они только полем param. Как мне собрать уникальные где поле param собирется из всех похожих. вот пример массива.
    PHP:
    1. [2] => Array
    2.         (
    3.             [price] => 1399.0000
    4.             [categoryId] => 63
    5.             [name] => Смокинг 2413 (Черный)
    6.             [description] =>
    7.             [picture0] =>
    8. https://tytmodno.com/image/data/1e/1e1ae661-8b0c-11e2-9502-8c89a5d9e6b9-2.jpeg
    9.  
    10.             [picture1] =>
    11. https://tytmodno.com/image/data/1e/1e1ae661-8b0c-11e2-9502-8c89a5d9e6b9-3.jpeg
    12.  
    13.             [picture2] =>
    14. https://tytmodno.com/image/data/1e/1e1ae661-8b0c-11e2-9502-8c89a5d9e6b9.jpeg
    15.  
    16.             [param] => Array
    17.                 (
    18.                     [0] => Черный
    19.                     [1] => XXL
    20.                     [2] => S
    21.                 )
    22.  
    23.             [quantity] => 17
    24.         )
    25.  
    26.     [3] => Array
    27.         (
    28.             [price] => 1399.0000
    29.             [categoryId] => 63
    30.             [name] => Смокинг 2413 (Черный)
    31.             [description] =>
    32.             [picture0] =>
    33. https://tytmodno.com/image/data/1e/1e1ae661-8b0c-11e2-9502-8c89a5d9e6b9-2.jpeg
    34.  
    35.             [picture1] =>
    36. https://tytmodno.com/image/data/1e/1e1ae661-8b0c-11e2-9502-8c89a5d9e6b9-3.jpeg
    37.  
    38.             [picture2] =>
    39. https://tytmodno.com/image/data/1e/1e1ae661-8b0c-11e2-9502-8c89a5d9e6b9.jpeg
    40.  
    41.             [param] => Array
    42.                 (
    43.                     [0] => Черный
    44.                     [1] => XXL
    45.                     [2] => M
    46.                 )
    47.  
    48.             [quantity] => 17
    49.         )
    50.  
    51.     [4] => Array
    52.         (
    53.             [price] => 1399.0000
    54.             [categoryId] => 63
    55.             [name] => Смокинг 2413 (Черный)
    56.             [description] =>
    57.             [picture0] =>
    58. https://tytmodno.com/image/data/1e/1e1ae661-8b0c-11e2-9502-8c89a5d9e6b9-2.jpeg
    59.  
    60.             [picture1] =>
    61. https://tytmodno.com/image/data/1e/1e1ae661-8b0c-11e2-9502-8c89a5d9e6b9-3.jpeg
    62.  
    63.             [picture2] =>
    64. https://tytmodno.com/image/data/1e/1e1ae661-8b0c-11e2-9502-8c89a5d9e6b9.jpeg
    65.  
    66.             [param] => Array
    67.                 (
    68.                     [0] => Черный
    69.                     [1] => XXL
    70.                     [2] => L
    71.                 )
    72.  
    73.             [quantity] => 17
    74.         )
     
  2. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    массив param должен быть совсем одинаковым или учитывать похожесть по каким-то признакам?
     
  3. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    в итоге должен остаться один массив из этих трух одинаковых в нем масив парам который содержит все параметры трех массивов.ну например в param должно быть
    PHP:
    1.  [param] => Array
    2.                 (
    3.                     [0] => Черный
    4.                     [1] => XXL
    5.                     [2] => S
    6.                     [3] => M
    7.                     [4] => L
    8.                 )
     
  4. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Спасибо. все сделал.

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

    PHP:
    1. for($a = 0; $a <= 300;$a++){
    2.        
    3.             if($mas['shop']['offers']['offer'][$i]['name'] === $mas['shop']['offers']['offer'][$a]['name'] and $a != $i){
    4.                 $param .= ''.$mas['shop']['offers']['offer'][$i]['param'][0].'/'.$mas['shop']['offers']['offer'][$i]['param'][1].'/'.$mas['shop']['offers']['offer'][$a]['param'][1].'/'.$mas['shop']['offers']['offer'][$a]['param'][2].''.$mas['shop']['offers']['offer'][$a]['param'][3].'';
    5.                 $price = $mas['shop']['offers']['offer'][$i]['price'];
    6.                 $cat = $mas['shop']['offers']['offer'][$i]['categoryId'];
    7.                 $name = $mas['shop']['offers']['offer'][$i]['name'];
    8.                 $desc = $mas['shop']['offers']['offer'][$i]['description'][0];
    9.                
    10.                 if (trim(substr($mas['shop']['offers']['offer'][$i]['picture'][0], 0, 5)) === 'http') {
    11.                    
    12.                     $pic1 = $mas['shop']['offers']['offer'][$i]['picture'][0];
    13.                     $pic2 = $mas['shop']['offers']['offer'][$i]['picture'][1];
    14.                     $pic3 = $mas['shop']['offers']['offer'][$i]['picture'][2];
    15.                     $pic4 = $mas['shop']['offers']['offer'][$i]['picture'][3];
    16.                 }else{
    17.                
    18.                     $pic1 =  ''.$mas['shop']['offers']['offer'][$i]['picture'].'a';
    19.                 }
    20.                 $quan = $mas['shop']['offers']['offer'][$i]['quantity'];
    21.                
    22.                
    23.                 unset($mas['shop']['offers']['offer'][$a]);
    24.             }else{
    25.                 if($a == 300){
    26.                     if($param == ''){
    27.                        
    28.                         $price = $mas['shop']['offers']['offer'][$i]['price'];
    29.                         $cat = $mas['shop']['offers']['offer'][$i]['categoryId'];
    30.                         $name = $mas['shop']['offers']['offer'][$i]['name'];
    31.                         $desc = $mas['shop']['offers']['offer'][$i]['description'][0];
    32.                         if (trim(substr($mas['shop']['offers']['offer'][$i]['picture'][0], 0, 5)) === 'http') {
    33.                         $pic1 = $mas['shop']['offers']['offer'][$i]['picture'][0];
    34.                         $pic2 = $mas['shop']['offers']['offer'][$i]['picture'][1];
    35.                         $pic3 = $mas['shop']['offers']['offer'][$i]['picture'][2];
    36.                         $pic4 = $mas['shop']['offers']['offer'][$i]['picture'][3];
    37.                         }else{
    38.                            
    39.                             $pic1 =  $mas['shop']['offers']['offer'][$i]['picture'];
    40.                         }
    41.                         $quan = $mas['shop']['offers']['offer'][$i]['quantity'];
    42.                         $param .= ''.$mas['shop']['offers']['offer'][$i]['param'][0].'/'.$mas['shop']['offers']['offer'][$i]['param'][1].'';
    43.                     }
    44.                     $i++;
    45.                 }
    46.             }
    47.         }        if($name != ''){
    48.                     $mas_prod2[] = array(
    49.                         'price' => $price,
    50.                         'categoryId' => $cat,
    51.                         'name' => $name,
    52.                         'description' => $desc,
    53.                         'picture0' => $pic1,
    54.                         'picture1' => $pic2,
    55.                         'picture2' => $pic3,
    56.                         'picture3' => $pic4,
    57.                         'param' => $param,
    58.                         'quantity' => $quan,
    59.                         );
    60.                     }
    61.                     $param = '';
    62.                    
    63.     }