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
相关产品推荐
相关产品推荐

