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

PHP如何查找数组匹配结果合并值后并入另一关联数组

PHP数组按epid匹配合并hash字段实现方案

实现思路

  • 第一步先遍历第一个数组,以epid为键归集所有对应hash值,生成哈希映射表,避免嵌套循环降低执行效率
  • 第二步遍历第二个数组,直接从哈希映射表中取出对应epid的hash数组,追加到当前元素中即可

实现代码

<?php
// 示例为数组格式,若实际使用的是对象格式,把数组访问语法[]改成->即可
$arr1 = [
    ["epid" => "123", "hash" => "xxxxxx"],
    ["epid" => "456", "hash" => "xxxxxx"],
    ["epid" => "789", "hash" => "xxxxxx"],
    ["epid" => "123", "hash" => "xxxxxx"],
    ["epid" => "123", "hash" => "xxxxxx"],
];

$arr2 = [
    ["epid" => "123", "name" => "This is a title"],
    ["epid" => "456", "name" => "This is a title"],
    ["epid" => "789", "name" => "This is a title"],
];

// 1. 生成epid到hash数组的映射表
$hashMap = [];
foreach ($arr1 as $item) {
    $epid = $item['epid'];
    if (!isset($hashMap[$epid])) {
        $hashMap[$epid] = [];
    }
    $hashMap[$epid][] = $item['hash'];
}

// 2. 给arr2追加hash字段
foreach ($arr2 as &$item) {
    $item['hash'] = $hashMap[$item['epid']] ?? [];
}
unset($item); // 销毁引用,避免后续逻辑操作变量时出现异常

// 打印验证结果
print_r($arr2);
?>

效果说明

运行后得到的$arr2和你预期的输出完全一致,epid为123的元素对应3个hash值,其余两个epid各对应1个hash值。如果出现$arr2中存在某个epid在$arr1中没有匹配项的情况,会默认赋值为空数组,你可以根据业务需求调整默认值。

内容的提问来源于stack exchange,提问作者Keith Petrillo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:06:03