如何在PHP中基于内部数组键对数组进行分组?

时间:2019-01-04 21:18:09

标签: php

我有一个数组,其中包含从数据库中提取的统计信息。每个内部数组都有一个基于其来源的键。我想将所有这些分组到一个新数组中。

array (
  0 => 
  array (
    7 => 
    array (
      'y' => 83,
      'label' => '2019-01-04 00:00:00',
    ),
  ),
  1 => 
  array (
    7 => 
    array (
      'y' => 80,
      'label' => '2019-01-02 00:00:00',
    ),
  ),
  2 => 
  array (
    8 => 
    array (
      'y' => 50,
      'label' => '2019-01-03 00:00:00',
    ),
  ),
)

会是这样的:

array (
    0 =>
    array( 
        0 =>
        array(
            'y' => 83,
            'label' => '2019-01-04 00:00:00',
        ),
        1 =>
        array(
            'y' => 80,
            'label' => '2019-01-02 00:00:00',
        ),
    ),
    1 =>
    array(
        0 =>
        array(
            'y' => 50,
            'label' => '2019-01-03 00:00:00',
        ),
    ),
)

但是,我似乎无法使用array_values()来实现这一目标。我想将所有的7组成一个数组,并将所有的8组成一个数组,但是,将来我可能会有更多的数字键。

有可以用来执行此操作的功能吗?

2 个答案:

答案 0 :(得分:3)

假设您的输入在变量$data中,则可以执行以下操作:

$result = [];
foreach($data as $arr) {
    foreach($arr as $k => $v) {
        $result[$k][] = $v;
    }
}

这将保留原始的内部键值,因此对于您的示例输入,结果将具有键7和8,而不是0和1。

如果您要那样做,请多做一件事:

$result = array_values($result);

答案 1 :(得分:0)

试试看!

fdate