检查数组值存在于另一个关联数组

时间:2017-01-03 11:04:50

标签: php arrays

我有两个不同的数组(比如说)array1array2。我想检查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

2 个答案:

答案 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'));

}

确保这对您有用。