Php 如果值相同,我想合并数组

Php 如果值相同,我想合并数组,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

我正在尝试按时间值组合多个数组。我有一个这样的数组。 我想合并2个数组,我使用array\u merge

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
        )

)