我现在的做法是这样的,定义了两个数组模拟模型查询结果
$counts=collect([['id'=>2,'count'=>10],['id'=>3,'count'=>15]]);
$names=collect([['id'=>1,'name'=>'张三'],['id'=>2,'name'=>'李四'],['id'=>3,'name'=>'王五']]);
array:2 [
0 => array:3 [
"id" => 2
"count" => 10
"name" => "李四"
1 => array:3 [
"id" => 3
"count" => 15
"name" => "王五"
该方法虽然有效,但总感觉不是最优解,希望大佬们给指正下
$counts = [['id' => 2, 'count' => 10], ['id' => 3, 'count' => 15]];
$names = [['id' => 1, 'name' => '张三'], ['id' => 2, 'name' => '李四'], ['id' => 3, 'name' => '王五']];
$countMap = array_column($counts, 'count', 'id');
$names = array_map(function ($item) use ($countMap) {
$item['count'] = $countMap[$item['id']] ?? 0;
return $item;
}, $names);
print_r($names);