Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于另一个数组键和值筛选数组_Php_Arrays_Compare - Fatal编程技术网

Php 基于另一个数组键和值筛选数组

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]

我有两个数组 在阵列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

如果标准将返回学生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,因为它满足所有条件。