我有两个不同的数组(比如说)array1
和array2
。我想检查array2
中是否存在array1
中的值。
Array1
(
[0] => Array
(
[id] => 7
[title] => Course1
)
[1] => Array
(
[id] => 8
[title] => course2
)
[2] => Array
(
[id] => 9
[title] => course3
)
)
Array2
(
[0] => 7
[1] => 8
)
我用过:
foreach ($array2 as $id) {
$found = current(array_filter($array1, function($item) {
return isset($item['id']) && ($id == $item['id']);
}));
print_r($found);
}
当我运行此代码时,它会出现以下错误:
Undefined variable: id
答案 0 :(得分:1)
您的错误原因是您尝试在匿名函数中使用不可用的变量。阅读relevant PHP documentation(尤其是示例#3),以确保您清楚我所说的内容。
简而言之,您的变量$id
在闭包(或匿名函数)的父作用域中声明。为了使其在您的闭包中可用,您必须通过use
声明将其提供。
如果您将代码的关键行更改为:
$found = current(array_filter($array1, function($item) use ($id) {
你的程序应该按预期工作。
答案 1 :(得分:0)
根据您的问题,这是一个简单的代码:
foreach($array2 as $id){
return in_array($id, array_column($array1, 'id'));
}
确保这对您有用。