php - 如何根据另一个数组中给定的条件从多维数组值中排除

标签 php arrays multidimensional-array

我有两个数组,其中 Array1 键是 Array2 中的 [teacher_id]:

Array1 ( [20] => 37 [44] => 40 )

Array2
(
    [0] => Array
        (
            [teacher_id] => 44
            [course_id] => 1180
            [student_id] => 1662
        )

    [1] => Array
        (
            [teacher_id] => 20
            [course_id] => 1180
            [student_id] => 1662
        )
    [2] => Array
        (
            [teacher_id] => 44
            [course_id] => 1180
            [student_id] => 1705
        )
)

我需要从 Array2 中排除这部分:

[0] => Array
    (
        [teacher_id] => 44
        [course_id] => 1180
        [student_id] => 1662
    )

条件是 array1 中的值 37 < 值 40。

我尝试了 array_filter 但我不知道如何为此编写正确的函数。 谢谢。

最佳答案

像这样

$array1 = array ( '20' => 37, '44' => 40 );       


$array2 = array (
    0 => 
    array (
        'teacher_id' => 44,
        'course_id' => 1180,
        'student_id' => 1662
    ),
    1 => 
    array (
        'teacher_id' => 20,
        'course_id' => 1180,
        'student_id' => 1662
    ),
    2 => 
    array (
        'teacher_id' => 44,
        'course_id' => 1180,
        'student_id' => 1705
    )
);



$array = array_filter($array2, function($item) use ($array1){
    $key = $item['teacher_id'];

    if(!isset($array1[$key])) return true; //always keep these
    return $item['teacher_id'] > $array1[$key];
});

print_r($array);

输出

Array
(
    [0] => Array
        (
            [teacher_id] => 44
            [course_id] => 1180
            [student_id] => 1662
        )

    [2] => Array
        (
            [teacher_id] => 44
            [course_id] => 1180
            [student_id] => 1705
        )

)

Sandbox

注意 use ($array1)但在那之后你打算用它做什么还是个谜。

我不确定这是否

I need to exclude this part from Array2:

表示仅保留该内容或仅删除该内容。你的问题很模糊我不知道这是什么I need to exclude this part from Array2 .. on condition that in array1 value 37 < value 40.意思是

让我重新表述一下。

您需要从 $array2 中排除一些位条件为$array1 [东西]值37小于 [something] 值 40 .

我想这意味着

 I have two arrays where Array1 keys are [teacher_id] in Array2:

那个20 => 37 (来自 $array1 )与 'teacher_id' => 20 搭配(来自$array2)

但是我该怎么办on condition that in array1 value 37 < value 40关于那个?这些值都不是来自 $array2 .

关于php - 如何根据另一个数组中给定的条件从多维数组值中排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54965916/

相关文章:

javascript - 将选定/保存的值(来自数据库)设置/显示到选择框以进行编辑

php - 为什么这段 PHP 代码在一台机器上运行而在另一台机器上失败?

php - SQL QUERY 没有得到我期望的结果

c# - 列表<double> 到 ALGLIB 的 double[,]

c - 将第一行替换为空格

javascript - 如何定义数组

php - AJAX MySQL 更改输入值

javascript - 带有对象、数组的转换器通过函数传递变量

java - Java中的键>值配对数组

javascript - 如何在本地存储 JavaScript 中存储和检索多维数组