За последние 24 часа нас посетили 19190 программистов и 1646 роботов. Сейчас ищут 976 программистов ...

Не могу собрать массив

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

  1. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Пишу рекурсию что бы собрать уникальный массив
    Вот изначальный

    PHP:
    1.  [0] => Array
    2.         (
    3.             [aderes] => ул. Белы Куна, д.24 к.1
    4.             [price_point] => 200
    5.             [id_point] => 1
    6.             [kuzov_type] => Легковой
    7.             [price_cuzov] => 100
    8.             [id_kuzov] => 1
    9.             [id_kuzov_from_point] => 1
    10.             [id_wheel] => 5
    11.             [id_wheel_from_kuzov] => 1
    12.             [size_wheel] => R13
    13.             [usluga] => 4 колеса*
    14.             [usluga_cost] => 1200
    15.             [id_wheel_from_usluga] => 5
    16.             [id_usluga] => 9
    17.         )
    18.  
    19.     [1] => Array
    20.         (
    21.             [aderes] => ул. Белы Куна, д.24 к.1
    22.             [price_point] => 200
    23.             [id_point] => 1
    24.             [kuzov_type] => Легковой
    25.             [price_cuzov] => 100
    26.             [id_kuzov] => 1
    27.             [id_kuzov_from_point] => 1
    28.             [id_wheel] => 5
    29.             [id_wheel_from_kuzov] => 1
    30.             [size_wheel] => R13
    31.             [usluga] => без монтажа**
    32.             [usluga_cost] => 800
    33.             [id_wheel_from_usluga] => 5
    34.             [id_usluga] => 8
    35.         )
    ну и тд он много повторяется там меняются поля некоторые
    вот как пытаюсь собирать

    PHP:
    1. private function getUnicMas($mas,$attr,$point=''){
    2.             static $ma_res = [];
    3.             if($point){
    4.                 foreach($mas as $key=>$val){
    5.                     if($val[$attr] == $point){
    6.                         $ma_res [$point]= [
    7.                             $val['aderes'] => [
    8.                                 'price_point' => $val['price_point'],
    9.                                 'aderes' => $val['aderes'],
    10.                                 $val['kuzov_type'] => [
    11.                                     'kuzov_type' =>$val['kuzov_type'],
    12.                                     'price_cuzov' => $val['price_cuzov'],
    13.                                     'id_kuzov' => $val['id_kuzov'],
    14.                                     'id_kuzov_from_point' => $val['id_kuzov_from_point'],
    15.                                     $val['size_wheel'] =>[
    16.                                         'id_wheel' => $val['id_wheel'],
    17.                                         'id_wheel_from_kuzov' => $val['id_wheel_from_kuzov'],
    18.                                         $val['usluga']=>[
    19.                                             'usluga_cost' => $val['usluga_cost'],
    20.                                             'id_wheel_from_usluga' => $val['id_wheel_from_usluga'],
    21.                                             'id_usluga' => $val['id_usluga'],
    22.                                         ],
    23.                                     ],
    24.                                 ],
    25.                             ],
    26.                         ];
    27.                     }
    28.                 }
    29.             }else{
    30.                foreach($mas as $key=>$val){
    31.                    $this->getUnicMas($mas,$attr,$val[$attr]);
    32.                }
    33.             }
    34.            return $ma_res;
    35.         }
    но получается не то что ожидаю

    PHP:
    1.  [1] => Array
    2.         (
    3.             [ул. Белы Куна, д.24 к.1] => Array
    4.                 (
    5.                     [price_point] => 200
    6.                     [aderes] => ул. Белы Куна, д.24 к.1
    7.                     [Минивэн] => Array
    8.                         (
    9.                             [kuzov_type] => Минивэн
    10.                             [price_cuzov] => 150
    11.                             [id_kuzov] => 2
    12.                             [id_kuzov_from_point] => 1
    13.                             [R-16,17] => Array
    14.                                 (
    15.                                     [id_wheel] => 14
    16.                                     [id_wheel_from_kuzov] => 2
    17.                                     [без монтажа**] => Array
    18.                                         (
    19.                                             [usluga_cost] => 1320
    20.                                             [id_wheel_from_usluga] => 14
    21.                                             [id_usluga] => 27
    22.                                         )
    23.  
    24.                                 )
    25.  
    26.                         )
    27.  
    28.                 )
    29.  
    30.         )
    Например там где минивен должно быть еще несколько типов разных потом там где R-16,17 тоже должны быть еще массивы и также где без монтажа** должны быть еще массивы. Он короче собирает только последние данные типо заменяет а не создает новыепочему не могу понять
     
  2. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    А какой результат надо сделать из данных массивов, что-то я испугался вашего кода.
     
  3. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Вот есть массив вставляю не полный его нужно собрать в один

    PHP:
    1. (
    2.     [0] => Array
    3.         (
    4.             [aderes] => ул. Белы Куна, д.24 к.1
    5.             [price_point] => 200
    6.             [id_point] => 1
    7.             [kuzov_type] => Легковой
    8.             [price_cuzov] => 100
    9.             [id_kuzov] => 1
    10.             [id_kuzov_from_point] => 1
    11.             [id_wheel] => 5
    12.             [id_wheel_from_kuzov] => 1
    13.             [size_wheel] => R13
    14.             [usluga] => 4 колеса*
    15.             [usluga_cost] => 1200
    16.             [id_wheel_from_usluga] => 5
    17.             [id_usluga] => 9
    18.         )
    19.  
    20.     [1] => Array
    21.         (
    22.             [aderes] => ул. Белы Куна, д.24 к.1
    23.             [price_point] => 200
    24.             [id_point] => 1
    25.             [kuzov_type] => Легковой
    26.             [price_cuzov] => 100
    27.             [id_kuzov] => 1
    28.             [id_kuzov_from_point] => 1
    29.             [id_wheel] => 5
    30.             [id_wheel_from_kuzov] => 1
    31.             [size_wheel] => R13
    32.             [usluga] => без монтажа**
    33.             [usluga_cost] => 800
    34.             [id_wheel_from_usluga] => 5
    35.             [id_usluga] => 8
    36.         )
    37.  
    38.     [2] => Array
    39.         (
    40.             [aderes] => ул. Белы Куна, д.24 к.1
    41.             [price_point] => 200
    42.             [id_point] => 1
    43.             [kuzov_type] => Легковой
    44.             [price_cuzov] => 100
    45.             [id_kuzov] => 1
    46.             [id_kuzov_from_point] => 1
    47.             [id_wheel] => 3
    48.             [id_wheel_from_kuzov] => 1
    49.             [size_wheel] => R14
    50.             [usluga] => 4 колеса*
    51.             [usluga_cost] => 1280
    52.             [id_wheel_from_usluga] => 3
    53.             [id_usluga] => 10
    54.         )
    55.  
    56.     [3] => Array
    57.         (
    58.             [aderes] => ул. Белы Куна, д.24 к.1
    59.             [price_point] => 200
    60.             [id_point] => 1
    61.             [kuzov_type] => Легковой
    62.             [price_cuzov] => 100
    63.             [id_kuzov] => 1
    64.             [id_kuzov_from_point] => 1
    65.             [id_wheel] => 3
    66.             [id_wheel_from_kuzov] => 1
    67.             [size_wheel] => R14
    68.             [usluga] => без монтажа**
    69.             [usluga_cost] => 880
    70.             [id_wheel_from_usluga] => 3
    71.             [id_usluga] => 11
    72.         )
    73.  
    74.     [4] => Array
    75.         (
    76.             [aderes] => ул. Белы Куна, д.24 к.1
    77.             [price_point] => 200
    78.             [id_point] => 1
    79.             [kuzov_type] => Легковой
    80.             [price_cuzov] => 100
    81.             [id_kuzov] => 1
    82.             [id_kuzov_from_point] => 1
    83.             [id_wheel] => 4
    84.             [id_wheel_from_kuzov] => 1
    85.             [size_wheel] => R15
    86.             [usluga] => 4 колеса*
    87.             [usluga_cost] => 1440
    88.             [id_wheel_from_usluga] => 4
    89.             [id_usluga] => 12
    90.         )
    91.  
    92.     [5] => Array
    93.         (
    94.             [aderes] => ул. Белы Куна, д.24 к.1
    95.             [price_point] => 200
    96.             [id_point] => 1
    97.             [kuzov_type] => Легковой
    98.             [price_cuzov] => 100
    99.             [id_kuzov] => 1
    100.             [id_kuzov_from_point] => 1
    101.             [id_wheel] => 4
    102.             [id_wheel_from_kuzov] => 1
    103.             [size_wheel] => R15
    104.             [usluga] => без монтажа**
    105.             [usluga_cost] => 1040
    106.             [id_wheel_from_usluga] => 4
    107.             [id_usluga] => 13
    108.         )
    109.  
    110.     [6] => Array
    111.         (
    112.             [aderes] => ул. Белы Куна, д.24 к.1
    113.             [price_point] => 200
    114.             [id_point] => 1
    115.             [kuzov_type] => Легковой
    116.             [price_cuzov] => 100
    117.             [id_kuzov] => 1
    118.             [id_kuzov_from_point] => 1
    119.             [id_wheel] => 6
    120.             [id_wheel_from_kuzov] => 1
    121.             [size_wheel] => R16
    122.             [usluga] => 4 колеса*
    123.             [usluga_cost] => 1640
    124.             [id_wheel_from_usluga] => 6
    125.             [id_usluga] => 14
    126.         )
    --- Добавлено ---
    выше написал
     
  4. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    результативный напиши
     
  5. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    PHP:
    1. [1] => Array
    2.         (
    3.             [ул. Белы Куна, д.24 к.1] => Array
    4.                 (
    5.                     [price_point] => 200
    6.                     [aderes] => ул. Белы Куна, д.24 к.1
    7.                     [Минивэн] => Array
    8.                         (
    9.                             [kuzov_type] => Минивэн
    10.                             [price_cuzov] => 150
    11.                             [id_kuzov] => 2
    12.                             [id_kuzov_from_point] => 1
    13.                             [R-16,17] => Array
    14.                                 (
    15.                                     [id_wheel] => 14
    16.                                     [id_wheel_from_kuzov] => 2
    17.                                     [без монтажа**] => Array
    18.                                         (
    19.                                             [usluga_cost] => 1320
    20.                                             [id_wheel_from_usluga] => 14
    21.                                             [id_usluga] => 27
    22.                                         )
    23.                                 )
    24.                             [R-17] => Array
    25.                                 (
    26.                                     [id_wheel] => 14
    27.                                     [id_wheel_from_kuzov] => 2
    28.                                     [без монтажа**] => Array
    29.                                         (
    30.                                             [usluga_cost] => 1320
    31.                                             [id_wheel_from_usluga] => 14
    32.                                             [id_usluga] => 27
    33.                                         )
    34.                                     [без монтажа2] => Array
    35.                                         (
    36.                                             [usluga_cost] => 1320
    37.                                             [id_wheel_from_usluga] => 14
    38.                                             [id_usluga] => 27
    39.                                         )
    40.                                 )
    41.                         )
    42.                     [Минивэн2] => Array
    43.                         (
    44.                             [kuzov_type] => Минивэн
    45.                             [price_cuzov] => 150
    46.                             [id_kuzov] => 2
    47.                             [id_kuzov_from_point] => 1
    48.                             [R-16,17] => Array
    49.                                 (
    50.                                     [id_wheel] => 14
    51.                                     [id_wheel_from_kuzov] => 2
    52.                                     [без монтажа**] => Array
    53.                                         (
    54.                                             [usluga_cost] => 1320
    55.                                             [id_wheel_from_usluga] => 14
    56.                                             [id_usluga] => 27
    57.                                         )
    58.                                 )
    59.                             [R-18] => Array
    60.                                 (
    61.                                     [id_wheel] => 14
    62.                                     [id_wheel_from_kuzov] => 2
    63.                                     [без монтажа**] => Array
    64.                                         (
    65.                                             [usluga_cost] => 1320
    66.                                             [id_wheel_from_usluga] => 14
    67.                                             [id_usluga] => 27
    68.                                         )
    69.                                     [без монтажа 2] => Array
    70.                                         (
    71.                                             [usluga_cost] => 1320
    72.                                             [id_wheel_from_usluga] => 14
    73.                                             [id_usluga] => 27
    74.                                         )
    75.                                 )
    76.                         )
    77.                 )
    78.         )
     
  6. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    какая-то странная структура
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    а все по то муууу штааа :eek:

    логику
    [R-16,17]
    [R-18]

    не нашел
     
  8. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Это размеры колес ну суть в том что должно выглядеть так у адреса есть типы кузовов (минивен, джип...) и каждого типа кузова есть размеры колес (R-16,R-17 ...) у каждого разера колеса есть услуги (без монтажа**, с шиномонтажом...)
    вот такая вот структура должна быть.
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    у R-16,R-17 одинаковы опции ?
     
  10. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    нет разные.
    Ключи одинаковые а значения разные
     
  11. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    бредовая структура
     
  12. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Ок. Предложения ?
     
  13. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    покажи нормальный список машин и услуг
     
  14. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Списка нет. Сначала формирую вот такой массив когда достаю из базы данные
    PHP:
    1. (
    2.     [0] => Array
    3.         (
    4.             [aderes] => ул. Белы Куна, д.24 к.1
    5.             [price_point] => 200
    6.             [id_point] => 1
    7.             [kuzov_type] => Легковой
    8.             [price_cuzov] => 100
    9.             [id_kuzov] => 1
    10.             [id_kuzov_from_point] => 1
    11.             [id_wheel] => 5
    12.             [id_wheel_from_kuzov] => 1
    13.             [size_wheel] => R13
    14.             [usluga] => 4 колеса*
    15.             [usluga_cost] => 1200
    16.             [id_wheel_from_usluga] => 5
    17.             [id_usluga] => 9
    18.         )
    19.     [1] => Array
    20.         (
    21.             [aderes] => ул. Белы Куна, д.24 к.1
    22.             [price_point] => 200
    23.             [id_point] => 1
    24.             [kuzov_type] => Легковой
    25.             [price_cuzov] => 100
    26.             [id_kuzov] => 1
    27.             [id_kuzov_from_point] => 1
    28.             [id_wheel] => 5
    29.             [id_wheel_from_kuzov] => 1
    30.             [size_wheel] => R13
    31.             [usluga] => без монтажа**
    32.             [usluga_cost] => 800
    33.             [id_wheel_from_usluga] => 5
    34.             [id_usluga] => 8
    35.         )
    36.     [2] => Array
    37.         (
    38.             [aderes] => ул. Белы Куна, д.24 к.1
    39.             [price_point] => 200
    40.             [id_point] => 1
    41.             [kuzov_type] => Легковой
    42.             [price_cuzov] => 100
    43.             [id_kuzov] => 1
    44.             [id_kuzov_from_point] => 1
    45.             [id_wheel] => 3
    46.             [id_wheel_from_kuzov] => 1
    47.             [size_wheel] => R14
    48.             [usluga] => 4 колеса*
    49.             [usluga_cost] => 1280
    50.             [id_wheel_from_usluga] => 3
    51.             [id_usluga] => 10
    52.         )
    53.     [3] => Array
    54.         (
    55.             [aderes] => ул. Белы Куна, д.24 к.1
    56.             [price_point] => 200
    57.             [id_point] => 1
    58.             [kuzov_type] => Легковой
    59.             [price_cuzov] => 100
    60.             [id_kuzov] => 1
    61.             [id_kuzov_from_point] => 1
    62.             [id_wheel] => 3
    63.             [id_wheel_from_kuzov] => 1
    64.             [size_wheel] => R14
    65.             [usluga] => без монтажа**
    66.             [usluga_cost] => 880
    67.             [id_wheel_from_usluga] => 3
    68.             [id_usluga] => 11
    69.         )
    70.     [4] => Array
    71.         (
    72.             [aderes] => ул. Белы Куна, д.24 к.1
    73.             [price_point] => 200
    74.             [id_point] => 1
    75.             [kuzov_type] => Легковой
    76.             [price_cuzov] => 100
    77.             [id_kuzov] => 1
    78.             [id_kuzov_from_point] => 1
    79.             [id_wheel] => 4
    80.             [id_wheel_from_kuzov] => 1
    81.             [size_wheel] => R15
    82.             [usluga] => 4 колеса*
    83.             [usluga_cost] => 1440
    84.             [id_wheel_from_usluga] => 4
    85.             [id_usluga] => 12
    86.         )
    87.     [5] => Array
    88.         (
    89.             [aderes] => ул. Белы Куна, д.24 к.1
    90.             [price_point] => 200
    91.             [id_point] => 1
    92.             [kuzov_type] => Легковой
    93.             [price_cuzov] => 100
    94.             [id_kuzov] => 1
    95.             [id_kuzov_from_point] => 1
    96.             [id_wheel] => 4
    97.             [id_wheel_from_kuzov] => 1
    98.             [size_wheel] => R15
    99.             [usluga] => без монтажа**
    100.             [usluga_cost] => 1040
    101.             [id_wheel_from_usluga] => 4
    102.             [id_usluga] => 13
    103.         )
    104.     [6] => Array
    105.         (
    106.             [aderes] => ул. Белы Куна, д.24 к.1
    107.             [price_point] => 200
    108.             [id_point] => 1
    109.             [kuzov_type] => Легковой
    110.             [price_cuzov] => 100
    111.             [id_kuzov] => 1
    112.             [id_kuzov_from_point] => 1
    113.             [id_wheel] => 6
    114.             [id_wheel_from_kuzov] => 1
    115.             [size_wheel] => R16
    116.             [usluga] => 4 колеса*
    117.             [usluga_cost] => 1640
    118.             [id_wheel_from_usluga] => 6
    119.             [id_usluga] => 14
    120.         )
     
  15. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    Получается разница только в цене колёс?
     
  16. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Нет массив сам еще больше это только часть я скопировал тае есть еще кузова и у каждого кузова своя цена у каждого колеса своя цена у каждой точки своя цена и у каждой услуги относительно размера колес своя цена
     
  17. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Какой массив должен получиться в самом конце?? Ты показал как получается после результат твоего кода. А как должно быть на самом деле?
     
  18. Dron-Boy

    Dron-Boy Старожил

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