Дата публикации : 2021.03.16
Автор:Виноградов Александр
Рейтинг статьи:
Сортировка и изменение многомерного массива array_walk, array_filter
<?php
/*$cats - многомерный массив для перебора функцией array_walk */
$cats= Array
(
[0] => Array
(
[id] => 52
[pos] => 1
[city_id] => 0
[title] => Пример исполнения калитки
)
[1] => Array
(
[id] => 53
[pos] => 2
[city_id] => 0
[title] => «Санаторий Радуга» г.Уфа
)
)
);
/*$images - массив картинок, который будем импортировать в $cats */
$images = Array
(
[0] => Array
(
[id] => 256
[galery_id] => 46
[img] => 256.jpg
)
[1] => Array
(
[id] => 257
[galery_id] => 46
[img] => 257.jpg
)
)
) ;
/*сортировка выборка из многомерного массива $cats*/
/*директива use позволяет перенести переменную $images в область видимости функции array_walk*/
/*элементы массива $cats передается по ссылке &$item значит функция array_walk изменит массив $cats*/
array_walk($cats, function (&$item, $key) use ($images)
{
/*делаем соотношение массива $cats с массивом $images */
/*добавляем к каждому элементу массива $cats массив images где $image['galery_id']==$item['id'] */
/*array_filter проходит по массиву $images и возвращает массив элементов
которые соответствуют условию $image['galery_id']==$item['id'] */
$item['images'] = array_filter($images,function($image) use ($item)
{
return $image['galery_id']===$item['id'];
});
});
// на выходе
$cats =
Array
(
[0] => Array
(
[id] => 52
[pos] => 1
[city_id] => 0
[title] => Пример исполнения калитки
[images] => Array
(
[84] => Array
(
[id] => 353
[galery_id] => 52
[img] => 353.jpg
)
[1] => Array
(
[id] => 53
[pos] => 2
[city_id] => 0
[title] => «Санаторий Радуга» г.Уфа
[images] => Array
(
[91] => Array
(
[id] => 360
[galery_id] => 53
[img] => 360.jpg
)
[92] => Array
(
[id] => 361
[galery_id] => 53
[img] => 361.jpg
)
)
)
?>