You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何从两个不同数组中提取以delivery_type_id为匹配依据的公共元素

解决方案

方案1:哈希过滤法(性能最优,适合数据量较大的场景)

先将数组2的delivery_type_id提取为键名哈希表,再直接过滤数组1即可:

// 提取数组2的所有delivery_type_id,转为以id为键的哈希表,提高查询效率
$validIds = array_flip(array_column($array2, 'delivery_type_id'));

// 过滤数组1,保留存在于哈希表中的元素
$result = array_filter($array1, function($item) use ($validIds) {
    return isset($validIds[$item['delivery_type_id']]);
});

// 可选:重置数组索引为0开始的连续数字
$result = array_values($result);

输出的$result就是你需要的结构。

方案2:基于array_uintersect的原生函数实现

如果想用系统内置的交集函数,可以用支持自定义比较规则的array_uintersect:

$result = array_uintersect($array1, $array2, function($a, $b) {
    return $a['delivery_type_id'] <=> $b['delivery_type_id'];
});
$result = array_values($result);

你之前使用array_intersect失败的原因是:该函数默认直接对比数组整体的序列化字符串结果,不会单独匹配指定的delivery_type_id字段,因此需要用支持自定义比较逻辑的array_uintersect才能实现需求。

内容的提问来源于stack exchange,提问作者Alok Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:18:03