繁体   English   中英

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

[英]Check array value exists in another associative array

我有两个不同的数组(例如) 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

错误的原因是您试图在匿名函数中使用一个不可用的变量。 阅读相关的PHP文档 (尤其是示例#3),以确保您清楚我在说什么。

简而言之,变量$id在闭包(或匿名函数)的父范围中声明。 为了使它在您的闭包中可用,您必须通过use语句使其可用。

如果将代码的关键行更改为:

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

您的程序应能按预期工作。

这是根据您的问题的简单代码:

foreach($array2 as $id){

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

}

确保这对您有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM