Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Выбрать из многомерного массива по значениям

Страниц (1): [1]
 

1. dropoff - 14 Октября, 2020 - 13:19:13 - перейти к сообщению
Всем привет Улыбка
Что-то никак не могу понять, как проще всего сделать. Выходит как-то грубо

Есть массив который получаю
PHP:
скопировать код в буфер обмена
  1. (
  2.     [32] => 32
  3.     [33] => 33
  4.     [37] => Array('text' => 'свой текст')
  5. )



Есть массив который формируется движком
PHP:
скопировать код в буфер обмена
  1.     [1] => Array (
  2.                 [id] => 1
  3.                 [name] => Цвет
  4.                 [values] => Array (
  5.                         [1] => Array (
  6.                                 [p_id] => 1
  7.                                 [p_name] => Синий
  8.                                 [pv_id] => 32
  9.                         )
  10.                         [2] => Array (
  11.                                 [p_id] => 2
  12.                                 [p_name] => Красный
  13.                                 [pv_id] => 33
  14.                         )
  15.                 )
  16.         )
  17.     [2] => Array (
  18.                 [id] => 2
  19.                 [pod_name] => Вес
  20.                 [values] => Array (
  21.                         [4] => Array (
  22.                                 [p_id] => 4
  23.                                 [p_name] => 100
  24.                                 [pv_id] => 34
  25.                         )
  26.                         [5] => Array (
  27.                                 [p_id] => 5
  28.                                 [p_name] => 200
  29.                                 [pv_id] => 37
  30.                         )
  31.                 )
  32.         )
  33. )


В первом массиве ключи - это номер из второго массива значения pv_id

В результате мне нужно получить массив
PHP:
скопировать код в буфер обмена
  1.     [1] => Array (
  2.                 [id] => 1
  3.                 [name] => Цвет
  4.                 [values] => Array (
  5.                         [1] => Array (
  6.                                 [p_id] => 1
  7.                                 [p_name] => Синий
  8.                                 [pv_id] => 32
  9.                         )
  10.                         [2] => Array (
  11.                                 [p_id] => 2
  12.                                 [p_name] => Красный
  13.                                 [pv_id] => 33
  14.                         )
  15.                 )
  16.         )
  17.     [2] => Array (
  18.                 [id] => 2
  19.                 [pod_name] => Вес
  20.                 [values] => Array (
  21.                         [5] => Array (
  22.                                 [p_id] => 5
  23.                                 [p_name] => 200
  24.                                 [pv_id] => 37
  25.                                 [text] => свой текст
  26.                         )
  27.                 )
  28.         )
  29. )


То есть убрать все лишнее и оставить только выбранные значения. При этом, если есть text, то добавить текст соответствующему массиву.

Буду благодарен за помощь!
2. Vladimir Kheifets - 15 Октября, 2020 - 14:12:43 - перейти к сообщению
dropoff пишет:
Всем привет Улыбка
Что-то никак не могу понять, как проще всего сделать. Выходит как-то грубо

Есть массив который получаю
PHP:
скопировать код в буфер обмена
  1. (
  2.     [32] => 32
  3.     [33] => 33
  4.     [37] => Array('text' => 'свой текст')
  5. )



Есть массив который формируется движком
PHP:
скопировать код в буфер обмена
  1.     [1] => Array (
  2.                 [id] => 1
  3.                 [name] => Цвет
  4.                 [values] => Array (
  5.                         [1] => Array (
  6.                                 [p_id] => 1
  7.                                 [p_name] => Синий
  8.                                 [pv_id] => 32
  9.                         )
  10.                         [2] => Array (
  11.                                 [p_id] => 2
  12.                                 [p_name] => Красный
  13.                                 [pv_id] => 33
  14.                         )
  15.                 )
  16.         )
  17.     [2] => Array (
  18.                 [id] => 2
  19.                 [pod_name] => Вес
  20.                 [values] => Array (
  21.                         [4] => Array (
  22.                                 [p_id] => 4
  23.                                 [p_name] => 100
  24.                                 [pv_id] => 34
  25.                         )
  26.                         [5] => Array (
  27.                                 [p_id] => 5
  28.                                 [p_name] => 200
  29.                                 [pv_id] => 37
  30.                         )
  31.                 )
  32.         )
  33. )


В первом массиве ключи - это номер из второго массива значения pv_id

В результате мне нужно получить массив
PHP:
скопировать код в буфер обмена
  1.     [1] => Array (
  2.                 [id] => 1
  3.                 [name] => Цвет
  4.                 [values] => Array (
  5.                         [1] => Array (
  6.                                 [p_id] => 1
  7.                                 [p_name] => Синий
  8.                                 [pv_id] => 32
  9.                         )
  10.                         [2] => Array (
  11.                                 [p_id] => 2
  12.                                 [p_name] => Красный
  13.                                 [pv_id] => 33
  14.                         )
  15.                 )
  16.         )
  17.     [2] => Array (
  18.                 [id] => 2
  19.                 [pod_name] => Вес
  20.                 [values] => Array (
  21.                         [5] => Array (
  22.                                 [p_id] => 5
  23.                                 [p_name] => 200
  24.                                 [pv_id] => 37
  25.                                 [text] => свой текст
  26.                         )
  27.                 )
  28.         )
  29. )


То есть убрать все лишнее и оставить только выбранные значения. При этом, если есть text, то добавить текст соответствующему массиву.

Буду благодарен за помощь!


Добрый день!
Побробуйте сделать так:
Спойлер (Отобразить)
Удачи!
3. LIME - 15 Октября, 2020 - 18:54:28 - перейти к сообщению
Vladimir Kheifets почему preg_match вот мне очень интересно
прям удивил
почему не isset($arr1[$pv_id])
(Добавление)
обожаю портянки на 5 страниц скролить))
а ответа 3 строчки)))

 

Powered by ExBB FM 1.0 RC1