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

PHP中如何基于指定键匹配多维数组并添加列?

基于指定键匹配两个多维数组元素并更新值

如果需要检查第一个多维数组中每个元素的指定键值(比如id)是否存在于第二个多维数组中,匹配成功后还能更新对应元素的字段,可以用下面的PHP代码实现:

<?php
$arr = [
    ["name" => "Sonu", "id" => 2135],
    ["name" => "rahul", "id" => 5342],
    ["name" => "rahul", "id" => 123]
];
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);

// 匹配$arr中索引为1的元素的id
$index = array_search($arr[1]["id"], array_column($records, 'id'));
if($index !== false){
    $records[$index]["name"] = $arr[1]["name"];
    print_r($records[$index]);
} else {
    echo "not match";
}
?>

代码说明

  • array_column($records, 'id'):从records多维数组中提取所有id值,生成一个一维数组,简化后续的搜索操作。
  • array_search():在提取出的id数组中查找目标id的位置,返回对应的索引(未找到则返回false)。
  • 匹配成功后,直接通过索引更新records数组对应元素的name字段,并输出该元素;未匹配则输出提示信息。

扩展:遍历匹配所有元素

如果需要处理arr中的所有元素,可以用循环遍历的方式:

<?php
// 遍历$arr中的每个元素
foreach($arr as $item) {
    $index = array_search($item["id"], array_column($records, 'id'));
    if($index !== false){
        $records[$index]["name"] = $item["name"];
        echo "匹配成功并更新:\n";
        print_r($records[$index]);
    } else {
        echo "id为{$item['id']}的元素未匹配\n";
    }
}
?>

内容的提问来源于stack exchange,提问作者Sonu Rajput

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 13:12:20