为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
HUX布斯 2022-07-22 10:47:31
我有 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        ) )
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

您可以使用 生成要排除的电子邮件地址列表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);


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信