根据值php查找数组中的差异

我有 2 个数组 -


Array

(

    [0] => Array

        (

            [description] => 5390BF675E1464F32202B

            [to_email] => test@test.com

        )


    [1] => Array

        (

            [description] => 5390BF675E1464F32202B

            [to_email] => test3@test.com

        )


    [2] => Array

        (

            [description] => 5390BF675E1464F32202B

            [to_email] => testagain@gmail.com

        )


)


Array

(

    [0] => Array

        (

            [to_email] => test@test.com

        )


    [1] => Array

        (

            [to_email] => test3@test.com

        )


)

我想从数组 1 中获取与第二个数组不同的值。


我试过使用 -


$result = array_diff_assoc($array1, $array2);


$result = array_diff($array1, $array2);

但是两者都给出了错误,例如-


注意:数组到字符串的转换


我期待的结果是


Array

(

 [0] => Array

        (

            [description] => 5390BF675E1464F32202B

            [to_email] => testagain@gmail.com

        )

 )


HUX布斯
浏览 101回答 1
1回答

慕的地10843

您可以使用 生成要排除的电子邮件地址列表array_column。我们使用 3 参数形式按电子邮件地址索引该数组,因为它更容易过滤:$exclude_ids = array_column($array2, 'to_email', 'to_email');然后我们可以使用array_filter过滤器$array1:$output = array_filter($array1, function ($v) use ($exclude_ids) {    return !isset($exclude_ids[$v['to_email']]);});print_r($output);输出:Array(    [2] => Array        (            [description] => 5390BF675E1464F32202B            [to_email] => testagain@gmail.com        )    )3v4l.org 上的演示请注意,如果您希望输出数组重新索引为 0,只需使用$output = array_values($output);
打开App,查看更多内容
随时随地看视频慕课网APP