Matriz de filtro com base em outra chave de matriz e valores

eu tenho 2 arrays na matriz 1 eu tenho habilidade e são marcas elegíveis

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

em conjunto para ter estudante e sua habilidade e marcas obtidas

 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 ) ) ) 

Eu quero filtrar o aluno com base na matriz 1

eu quero estudar

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

se o critério Stratifies retornar id. do estudante

Use a seguinte abordagem:

 $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); 

A saída:

 Array ( [0] => 24 ) 

Link de teste: https://eval.in/private/10a7add53b1378