【问题标题】:Laravel - Combine Multiple Array By ValuesLaravel - 按值组合多个数组
【发布时间】:2017-03-15 12:27:18
【问题描述】:

我正在尝试按时间值组合多个数组。 我有一个这样的数组。

[
   {
      x:"Kasa",
      y:" 8",
      id:6,
      a:0.019444444444444
   },
   {
      x:"Kasa",
      y:" 9",
      id:6,
      a:0.023611111111111
   },
   {
      x:"Kasa",
      y:"10",
      id:6,
      a:0.018055555555556
   },
   {
      x:"Kasa",
      y:"11",
      id:6,
      a:0.025
   },
   {
      x:"Kasa",
      y:"12",
      id:6,
      a:0.0097222222222222
   }
],
[
   {
      x:"Kasap",
      y:" 8",
      id:7,
      a:0.0013888888888889
   },
   {
      x:"Kasap",
      y:" 9",
      id:7,
      a:0.015277777777778
   },
   {
      x:"Kasap",
      y:"10",
      id:7,
      a:0.0027777777777778
   },
   {
      x:"Kasap",
      y:"11",
      id:7,
      a:0.0041666666666667
   },
   {
      x:"Kasap",
      y:"12",
      id:7,
      a:0.019444444444444
   }
]

我需要将这 2 个数组与 y 值结合起来。例如组合后的数组应该是这样的。

[
   {
      x:"Kasa",
      y:" 8",
      id:6,
      a:0.019444444444444
   },
   {
      x:"Kasap",
      y:" 8",
      id:7,
      a:0.0013888888888889
   }
],
[
   {
      x:"Kasa",
      y:"11",
      id:6,
      a:0.025
   },
   {
      x:"Kasap",
      y:"11",
      id:7,
      a:0.0041666666666667
   }
],
[
   {
      x:"Kasa",
      y:"12",
      id:6,
      a:0.0097222222222222
   },
   {
      x:"Kasap",
      y:"12",
      id:7,
      a:0.019444444444444
   }
],
[
   {
      x:"Kasa",
      y:" 9",
      id:6,
      a:0.023611111111111
   },
   {
      x:"Kasap",
      y:" 9",
      id:7,
      a:0.015277777777778
   }
],
[
   {
      x:"Kasap",
      y:"10",
      id:7,
      a:0.0027777777777778
   },
   {
      x:"Kasa",
      y:"10",
      id:6,
      a:0.018055555555556
   }
]

这种情况我该怎么办?

【问题讨论】:

  • 格式化您的代码,添加您的试用版!
  • 已编辑但因提出问题而投反对票是不正常的
  • 不,不是我的!

标签: php arrays laravel laravel-5


【解决方案1】:

由于您将此问题标记为“Laravel”,因此您可以使用出色的 Collection 类:

collect($array)->flatten(1)->groupBy('y')->toArray()

【讨论】:

    【解决方案2】:

    试试这个: 我已经用这个数组测试过了

    array:3 [▼
      0 => array:2 [▼
        "x" => "Kasaa"
        "y" => "8"
      ]
      1 => array:2 [▼
        "x" => "Pasa"
        "y" => "9"
      ]
      2 => array:2 [▼
        "x" => "tasa"
        "y" => "8"
      ]
    ]
    

    编辑

      $array= array_merge($array1, $array2);
        foreach ($array as $k => $value) {
    
            foreach ( $value as $key => $v) {
                if ($key === 'y'){
                 $result[$v]='';
                }
            }
        }
        foreach ($array as $k => $value) {
            if ($value['y'] == key_exists($value['y'],$result)) {
                $result[$value['y']][$k]= $value;
    
            }
        }
    

    【讨论】:

    • 现在还是一样,只是降序排序
    【解决方案3】:

    试试php内置的array_merge_recursive()函数

    $array = array_merge_recursive($array1, $array2);
    or make your own function (it may be faster)
    function my_array_merge(&$array1, &$array2) {
        $result = Array();
        foreach($array1 as $key => &$value) {
            $result[$key] = array_merge($value, $array2[$key]);
        }
        return $result;
    }
    $array = my_array_merge($array1, array2);
    print_r($array);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 2011-02-13
      • 1970-01-01
      • 2023-03-31
      • 2016-03-20
      相关资源
      最近更新 更多