Php 如果值相同,我想合并数组
我正在尝试按时间值组合多个数组。我有一个这样的数组。 我想合并2个数组,我使用array\u mergePhp 如果值相同,我想合并数组,php,arrays,laravel,Php,Arrays,Laravel,我正在尝试按时间值组合多个数组。我有一个这样的数组。 我想合并2个数组,我使用array\u merge Array_one : [ { date:"2018-06-23", size:"L", type:"shoes", value_one:"66" }, { date:"20
Array_one :
[
{
date:"2018-06-23",
size:"L",
type:"shoes",
value_one:"66"
},
{
date:"2018-06-23",
size:"XL",
type:"shirt",
value_one:"43"
},
{
date:"2018-06-23",
size:"M",
type:"Bag",
value_one:"23"
}
]
Array_two :
[
{
date:"2018-06-23",
size:"L",
type:"shoes",
value_two:"28"
},
{
date:"2018-06-23",
size:"XL",
type:"shirt",
value_two:"56"
},
{
date:"2018-06-23",
size:"M",
type:"Bag",
value_two:"14"
},
{
date:"2018-06-23",
size:"S",
type:"Cap",
value_two:"29"
}
]
我需要将这2个数组与y值合并,如果索引日期、大小相同,请键入其合并。例如,组合后的数组应该是这样的
Array_final :
[
{
date:"2018-06-23",
size:"L",
type:"shoes",
value_one:"66",
value_two:"28"
},
{
date:"2018-06-23",
size:"XL",
type:"shirt",
value_one:"43",
value_two:"56"
},
{
date:"2018-06-23",
size:"M",
type:"Bag",
value_one:"23",
value_two:"14"
},
{
date:"2018-06-23",
size:"S",
type:"Cap",
value_one:"null",
value_two:"29"
}
]
这个案子我该怎么办?
我想用php、laravel或集合“laravel”类来解决这个问题。
请帮帮我。你可以试试这个
$Array_final= [];
foreach ($Array_one as $key1 => $value1) {
foreach ($Array_two as $key2 => $value2) {
if ($value1['date']==$value2['date']) {
$Array_final[]=$value2+$value1;
}
}
}
试一试
试一试
var结果=a1.切片(0);
对于(变量i=0;i
您可以尝试以下方法:-
$final = $arr1; // default get all values from first array
foreach ($arr2 as $value) { // loop through second array to match
$flag = 0;
foreach ($final as $key => $data) {
// Check for date, size and type
if ($data['date']===$value['date'] && $data['size']===$value['size'] && $data['type']===$value['type']) {
$final[$key]['value_two'] = $value['value_two'];
$flag = 1;
break;
}
}
if ($flag === 0) { // If similar not found, then add new one
array_push($final, $value);
}
}
print_r($final);
输出:-
Array
(
[0] => Array
(
[date] => 2018-06-23
[size] => L
[type] => shoes
[value_one] => 66
[value_two] => 28
)
[1] => Array
(
[date] => 2018-06-23
[size] => XL
[type] => shirt
[value_one] => 43
[value_two] => 56
)
[2] => Array
(
[date] => 2018-06-23
[size] => M
[type] => Bag
[value_one] => 23
[value_two] => 14
)
[3] => Array
(
[date] => 2018-06-23
[size] => S
[type] => Cap
[value_two] => 29
)
)
Fiddle link:-您应该提供您迄今为止尝试过的内容。我尝试使用类php array\u merge\u recursive()、array\u merge或使用此代码foreach($d as$k=>$v){$new arr[$v['date']][=$v;}创建数组和合并,但与OP预期的输出不匹配
$final = $arr1; // default get all values from first array
foreach ($arr2 as $value) { // loop through second array to match
$flag = 0;
foreach ($final as $key => $data) {
// Check for date, size and type
if ($data['date']===$value['date'] && $data['size']===$value['size'] && $data['type']===$value['type']) {
$final[$key]['value_two'] = $value['value_two'];
$flag = 1;
break;
}
}
if ($flag === 0) { // If similar not found, then add new one
array_push($final, $value);
}
}
print_r($final);
Array
(
[0] => Array
(
[date] => 2018-06-23
[size] => L
[type] => shoes
[value_one] => 66
[value_two] => 28
)
[1] => Array
(
[date] => 2018-06-23
[size] => XL
[type] => shirt
[value_one] => 43
[value_two] => 56
)
[2] => Array
(
[date] => 2018-06-23
[size] => M
[type] => Bag
[value_one] => 23
[value_two] => 14
)
[3] => Array
(
[date] => 2018-06-23
[size] => S
[type] => Cap
[value_two] => 29
)
)