У меня есть 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