Дата публикации : 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

                     
)

          )

          )
         
         
?>

Комментарии
Наверх страницы