我有两个数组,其中 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
)
)
注意 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/