2017-01-03 127 views
0

存在我有两个不同的阵列(例如)array1array2。我想检查array1中是否存在array2的值。检查数组值中的另一个关联数组

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 
+5

http://stackoverflow.com/questions/24760004/check-if-associative-array-contains-value-and-retrieve-key-position-in-array – Deep

+0

你究竟想要做什么?你能否更新你的问题,向我们展示你的尝试以及你期望得到的输出。 – dave

+0

不清楚了解 –

回答

0

下面是简单的代码按你的问题:

foreach($array2 as $id){ 

     return in_array($id, array_column($array1, 'id')); 

} 

确保这对您有用。

1

您错误的原因是您正尝试在匿名函数中使用一个不可用的变量。仔细阅读relevant PHP documentation(尤其是示例#3),以确保您清楚自己在说什么。

总之,你的变量$id在您关闭(或匿名函数)的父范围中声明。为了能够在您的关闭中使用它,您必须通过use声明使其可用。

如果你改变你的代码的关键路线为:预期

$found = current(array_filter($array1, function($item) use ($id) { 

你的程序应该工作。

相关问题