Php 将1个数组的值合并到键相同的另一个数组
我有两个数组,我想将一个值从一个数组推送到另一个数组,其中键值彼此相等 第一阵列Php 将1个数组的值合并到键相同的另一个数组,php,laravel,Php,Laravel,我有两个数组,我想将一个值从一个数组推送到另一个数组,其中键值彼此相等 第一阵列 $retail_rates=[ { "supplier": "ALAMO", "rateTotalAmount": 293.44, "estimatedTotalAmount": 495.34, //i want to add this AS retailTotalAmount "numDays": 9 // i want to add
$retail_rates=[
{
"supplier": "ALAMO",
"rateTotalAmount": 293.44,
"estimatedTotalAmount": 495.34, //i want to add this AS retailTotalAmount
"numDays": 9 // i want to add this
},
{
"supplier": "HERTZ",
"rateTotalAmount": 317.16,
"estimatedTotalAmount": 537.43,
"numDays": 9
}
]
第二阵列
$net_rates =[
{
"reference_number": "COMPEKYP7537400-2401",
"supplier": "HERTZ",
"rateTotalAmount": 203.01,
"estimatedTotalAmount": 291.21
},
{
"reference_number": "REF_ID:867692955",
"supplier": "ALAMO",
"rateTotalAmount": 147,
"estimatedTotalAmount": 225.58
}
]
我想要的是什么
$final_array=[
{
"reference_number": "COMPEKYP7537400-2401",
"supplier": "HERTZ",
"rateTotalAmount": 203.01,
"estimatedTotalAmount": 291.21,
"retailTotalAmount": 537.43,
"numDays": 9
},
{
"reference_number": "REF_ID:867692955",
"supplier": "ALAMO",
"rateTotalAmount": 147,
"estimatedTotalAmount": 225.58,
"retailTotalAmount": 495.34
"numDays": 9
}
// and so on all the way through
]
我试过几个循环,但似乎无法正确填充。如果您可以在第一个数组上迭代一次并创建一个以供应商为键的assoc数组,请提供帮助。然后迭代第二个数组并将其附加到第一个数组
$final_array = [];
foreach ($retail_array as $item) {
$final_array[$item['supplier']] = $item;
}
foreach ($net_array as $item) {
if (isset($final_array[$item['supplier']])) {
$final_array[$item['supplier']] = $item + $final_array[$item['supplier']];
} else {
$final_array[$item['supplier']] = $item;
}
}
试试这个
$result = [];
foreach ($net_rates as $net_key => $net_rate) {
foreach ($retail_rates as $retail_key => $retail_rate) {
if ($retail_rate['supplier'] != $net_rate['supplier']) {
continue;
}
$data = $net_rate;
$data['retailTotalAmount'] = $retail_rate['estimatedTotalAmount'];
$data['numDays'] = $retail_rate['numDays'];
$result[] = $data;
unset($retail_rates[$retail_key]);
unset($net_rates[$net_key]);
break;
}
}
$result = array_merge($result, $retail_rates);
$result = array_merge($result, $net_rates);
dd($result);
结果是
array:2 [▼
1 => array:6 [▼
"reference_number" => "COMPEKYP7537400-2401"
"supplier" => "HERTZ"
"rateTotalAmount" => 203.01
"estimatedTotalAmount" => 291.21
"retailTotalAmount" => 537.43
"numDays" => 9
]
0 => array:6 [▼
"reference_number" => "REF_ID:867692955"
"supplier" => "ALAMO"
"rateTotalAmount" => 147
"estimatedTotalAmount" => 225.58
"retailTotalAmount" => 495.34
"numDays" => 9
]
]
请告诉我们您尝试了什么,没有尝试什么。TackOverflow不是免费的编码服务。所以我希望你能。请更新您的问题,以显示您已在某个应用程序中尝试过的内容。有关更多信息,请参阅,以:)数组值是对象还是数组???@Barmar-我尝试添加我的代码,但太长了结果中的
retailTotalAmount
在哪里?您的输入没有retailTotalAmount
键他写道第一个数组中的estimatedTotalAmount
变成了retailTotalAmount
结果。“estimatedTotalAmount”:495.34,//我想将其添加为retailTotalAmount
这非常有效,但有时我无法获得所有供应商的零售价格,因此我的净价格数组缩小。我仍然想显示所有的净价,即使我不能得到零售价。他写了“estimatedTotalAmount”:495.34,//我想把它添加为retailTotalAmount
你没有重命名该字段。很抱歉,这会起作用,但有时我没有得到零售价中的所有供应商。我尝试并得到了错误“未定义索引”“美元”。这太干净了!