Массив фильтра на основе другого ключа и значений массива

У меня есть 2 массива в массиве 1, у меня есть навык и его подходящие знаки

Array ( [3] => 2 // skill => eligible marks [63] => 6 [128] => 3 ) 

в массиве, чтобы у меня был студент, его умение и полученные оценки

 Array ( [22] => Array ( [0] => Array ( [skill_id] => 3 [gd_score] => 4 ) [1] => Array ( [skill_id] => 128 [gd_score] => 6 ) ) [23] => Array ( [0] => Array ( [skill_id] => 128 [gd_score] => 3 ) ) [24] => Array ( [0] => Array ( [skill_id] => 3 [gd_score] => 7 ) [1] => Array ( [skill_id] => 63 [gd_score] => 8 ) [2] => Array ( [skill_id] => 128 [gd_score] => 9 ) ) ) 

я хочу отфильтровать ученика на основе массива 1

я хочу получить студента

 with skill 3 and marks grater than 2 AND skill 63 and marks grater than 6 AND skill 128 and marks grater than 3 

если критерии Стратифицирует возвращаемый идентификатор студента

Используйте следующий подход:

 $marks = array ( 3 => 2, // skill => eligible marks 63 => 6, 128 => 3 ); // $arr is your initial array of student data $student_ids = []; $marks_count = count($marks); foreach ($arr as $k => $items) { // if number of marks coincide if (count($marks) != count($items)) continue; foreach ($items as $item) { if (!isset($marks[$item['skill_id']]) || $marks[$item['skill_id']] >= $item['gd_score']) { continue 2; } } $student_ids[] = $k; } print_r($student_ids); 

Выход:

 Array ( [0] => 24 ) 

Тестовая ссылка: https://eval.in/private/10a7add53b1378