Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将1个数组的值合并到键相同的另一个数组_Php_Laravel - Fatal编程技术网

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
你没有重命名该字段。很抱歉,这会起作用,但有时我没有得到零售价中的所有供应商。我尝试并得到了错误“未定义索引”“美元”。这太干净了!