Php 基于另一个数组键和值筛选数组
我有两个数组 在阵列1中,我拥有技能和合格标记Php 基于另一个数组键和值筛选数组,php,arrays,compare,Php,Arrays,Compare,我有两个数组 在阵列1中,我拥有技能和合格标记 Array ( [3] => 2 // skill => eligible marks [63] => 6 [128] => 3 ) 在阵列中我有学生及其技能并获得了分数 Array ( [22] => Array ( [0] => Array ( [skill_id]
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
如果标准将返回学生id分层,请使用以下方法:
$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
)
测试链接:显示应该如何查看获得快速帮助的预期输出结果将是学生id,在我上面的问题中,答案是24,因为它满足所有条件。