比较两个数组并从PHP中的数组中删除数组

Sia*_*ada 2 php arrays

我有两个数组,我需要从较大的数组中删除较小的数组

$a = array(223 => 6, 381 => 6);
Run Code Online (Sandbox Code Playgroud)

和第二个数组是:

$b = array(array('id' => 45, 'username' => 'rock'), array('id' => 223, 'username' => 'pop'), array('id' => 381, 'username' => 'stock'));
Run Code Online (Sandbox Code Playgroud)

使用print_r(),它们看起来像这样

Array
(
    [223] => 6
    [381] => 6
)

Array
(
    [0] => Array
        (
            [id] => 45
            [username] => rock
        )

    [1] => Array
        (
            [id] => 223
            [username] => pop
        )

    [2] => Array
        (
            [id] => 381
            [username] => stock
        )

)
Run Code Online (Sandbox Code Playgroud)

如何从$ b数组中删除id!= $ a [keys]所以在结果中我会有这样的数组

Array
(
    [0] => Array
        (
            [id] => 223
            [username] => pop
        )

    [1] => Array
        (
            [id] => 381
            [username] => stock
        )

)
Run Code Online (Sandbox Code Playgroud)

我尝试使用array_diff,array_search和unset,但不知道如何使它工作.

bwo*_*ebi 6

所以,你想过滤掉不$a[$sub_array["id"]]存在的值,其中$sub_array的元素是$b:

然后array_filter()是你搜索的内容:

$array = array_filter($b, function ($val) use ($a) {
    return isset($a[$val["id"]]);
});
Run Code Online (Sandbox Code Playgroud)