Сортировка и изменение многомерного массива array_walk, array_filter

<?php
 
/*
          $cats= Array
          (
          [0] => Array
          (
          [id] => 52
          [pos] => 1
          [city_id] => 0
          [title] => Пример исполнения калитки
          [meta_deskription] => 0
          [item] => Пример исполнения калитки
          [main_img] => 0
          [desk_html] => 0
          [visible] => 1
          [main_page_pos] => 0
          )

          [1] => Array
          (
          [id] => 53
          [pos] => 2
          [city_id] => 0
          [title] => «Санаторий Радуга»  г.Уфа
          [meta_deskription] => 0
          [item] => Санаторий Радуга г.Уфа
          [main_img] => 0
          [desk_html] => 0
          [visible] => 1
          [main_page_pos] => 0
          )
          )
          )
         */
                
                
           /*
          $images = Array
          (

          [0] => Array
          (
          [id] => 256
          [galery_id] => 46
          [img] => 256.jpg
          [item] => Забор из габионов и калитка. МирЗаборов
          [price] => 0
          [kplink] => 0
          [prlink] => 0
          [pos] => 0
          [mainpage] => 0
          [class] =>
          [video_link] =>
          )

          [1] => Array
          (
          [id] => 257
          [galery_id] => 46
          [img] => 257.jpg
          [item] => Забор из габионов и калитка. МирЗаборов
          [price] => 0
          [kplink] => 0
          [prlink] => 0
          [pos] => 0
          [mainpage] => 0
          [class] =>
          [video_link] =>
          )
          )
          ) */

        /*сортировка выборка измногомерного массива*/
        /*директива 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] => Пример исполнения калитки
          [meta_deskription] => 0
          [item] => Пример исполнения калитки
          [main_img] => 0
          [desk_html] => 0
          [visible] => 1
          [main_page_pos] => 0
          [images] => Array
                      (
                      [84] => Array
                      (
                       [id] => 353
                       [galery_id] => 52
                       [img] => 353.jpg
                       [item] =>
                       [price] => 0
                       [kplink] => 0
                       [prlink] => 0
                       [pos] => 0
                       [mainpage] => 0
                       [class] =>
                       [video_link] =>
                       )

          [1] => Array
          (
          [id] => 53
          [pos] => 2
          [city_id] => 0
          [title] => «Санаторий Радуга»  г.Уфа
          [meta_deskription] => 0
          [item] => Санаторий Радуга г.Уфа
          [main_img] => 0
          [desk_html] => 0
          [visible] => 1
          [main_page_pos] => 0
          [images] => Array
          (
                    [91] => Array
                     (
                     [id] => 360
                     [galery_id] => 53
                     [img] => 360.jpg
                     [item] =>
                     [price] => 0
                     [kplink] => 0
                     [prlink] => 0
                     [pos] => 0
                     [mainpage] => 0
                     [class] =>
                     [video_link] =>
                     )

                    [92] => Array
                    (
                     [id] => 361
                     [galery_id] => 53
                     [img] => 361.jpg
                     [item] =>
                     [price] => 0
                     [kplink] => 0
                     [prlink] => 0
                     [pos] => 0
                     [mainpage] => 0
                     [class] =>
                     [video_link] =>
                     )

        

          )

          )
         */
         
?>

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