有多组身份证.想比较和删除的id后,我比较它与原来的array.

$origialArr = [4883,8438,8468,4001,8577];
$arr = [
 [8438,8468,4001,8577],
 [4883,8438,8468,4001,8577],
 [4883,8468,4001,8577],
 [4883,8438,8468,4001,8577],
 [4883,8438,8468,4001,8577],
]

不在$arr中的号码或ID应从$originalArr中删除. 我到目前为止已经try 过了,但没有效果,也无法摆脱4883和8438:

// attempt 1
$arr1 = [];
foreach ($arr as $item) {
    $arr1[] = array_intersect($origialArr, $item);
}

// attempt 2
$anotherArr = [];
foreach ($arr as $item) {
    foreach ($item as $id) {
         $anotherArr[] = array_filter($origialArr, function($origArr) use ($id) {
              if ($id === $origArr) {
                   return $id;
              }
         });
    }
}

预期输出:

[8468,4001,8577]

任何帮助都将不胜感激.谢谢!

推荐答案

我想你的第一次try 就快成功了.如果你改用累积法:

$arr1 = $origialArr;
foreach ($arr as $item) {
    $arr1 = array_intersect($arr1, $item);
}

或者,如果你想要非常紧凑的话:

$arr1 = array_reduce($arr, 'array_intersect', $origialArr);

生产$arr1 = [8468, 4001, 8577];

Php相关问答推荐

按制造商、型号和年份范围判断数据的存在性

Woocommerce自定义变体html表仅显示带值的列

在Woocommerce变量产品中的标签附近显示所选属性选项名称

如何实现对数据库表中多列的唯一约束?

PHP:使用FORT从数据库获取USERS表到AUTH表

在Laravel中创建辅助函数时的约定

文件::Files()响应返回空对象数组

Laravel处理belongToMany和额外字段

根据类别的数量折扣更改WooCommerce购物车商品价格

Laravel withOnly不限制查询

服务器升级到新的mysql版本8.0.34后查询错误

为什么从一个页面到另一个页面都找不到 JQuery,因为它们使用相同的 twig 模板?

WordPress 分页无法正常工作

使用自定义规则进行 Livewire 验证不会显示错误

我的功能以舒适的方式显示数组 struct

使用 PHP 的 OAuth 2.0 MAC

PHP for each 函数打印 td

如何在 WooCommerce 中显示每个自定义选项卡的内容

Laravel 查询关系是否为 bool

NetBeans 不显示中文内容