За последние 24 часа нас посетили 16562 программиста и 1644 робота. Сейчас ищут 1337 программистов ...

Фильтрация многомерного массива

Тема в разделе "PHP для новичков", создана пользователем ivantarakan, 11 янв 2018.

  1. ivantarakan

    ivantarakan Новичок

    С нами с:
    11 янв 2018
    Сообщения:
    9
    Симпатии:
    0
    Здравствуйте. Есть массив в json в $decode
    Код (Text):
    1. {"tyres":[{"catid":"2","author":"Hankook","profile":"185\/60","radius":"14","protector2":"\u0414\u043e\u0440\u043e\u0436\u043d\u044b\u0439","extent":"\u041b\u0435\u0433\u043a\u043e\u0432\u044b\u0435","extent2":"","extent3":""},{"catid":"2","author":"Dunlop","profile":"185\/65","radius":"13","protector2":"\u0414\u043e\u0440\u043e\u0436\u043d\u044b\u0439","extent":"","extent2":"","extent3":""},{"catid":"2","author":"Yokohama","profile":"185\/55","radius":"15","protector2":"\u0414\u043e\u0440\u043e\u0436\u043d\u044b\u0439","extent":"\u041b\u0435\u0433\u043a\u043e\u0432\u044b\u0435","extent2":"","extent3":""},{"catid":"2","author":"Tigar","profile":"185\/60","radius":"14","protector2":"\u0414\u043e\u0440\u043e\u0436\u043d\u044b\u0439","extent":"","extent2":"","extent3":""}]}
    И есть массив
    Код (Text):
    1. $G=array('author'=>'Hangook|Dunlop','profile'=>'165/60|185/65','radius'=>'12|13|14','extent'=>'Легковые|Коммерческие');
    Надо отфильтровать массив из json согласно $G. Пытаюсь так:
    Код (Text):
    1.    
    2. $arr = json_decode($decode, true);
    3.     foreach ($G as $k=>$v) {
    4.             $aRR = array_filter($arr['tyres'], function ($val) use ($k,$v,$arr) {
    5.             $search=explode('|',$v);
    6.             return (in_array($val[$k],$search));  
    7.         });
    8.     }
    9. var_dump($aRR);
    Но не могу получить отфильрованные данные. Уже второй день бьюс((. Помогите!
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.797
    Симпатии:
    1.331
    Адрес:
    Лень
    ну да, каждый раз перезаписывать переменную $aRR =
     
  3. ivantarakan

    ivantarakan Новичок

    С нами с:
    11 янв 2018
    Сообщения:
    9
    Симпатии:
    0
    Так что делать-то?
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.797
    Симпатии:
    1.331
    Адрес:
    Лень
    понять, что скрипт твой делает.
     
  5. ivantarakan

    ivantarakan Новичок

    С нами с:
    11 янв 2018
    Сообщения:
    9
    Симпатии:
    0
    Решил таким образом:
    Код (Text):
    1. $current=array();
    2. $aRR=array();
    3.     foreach ($G as $k=>$v) {
    4.             $aRR = array_filter($arr['tyres'], function ($val) use ($k,$v) {
    5.             $search=explode('|',$v);
    6.             if (in_array($val[$k],$search)) $current[]=$val;
    7.             return ($current);
    8.         });      
    9.         $arr['tyres']=$aRR;
    10.     }
    11. var_dump($arr['tyres']);