【问题标题】:How to group subarrays by a column value?如何根据另一列将数据行分组为子数组?
【发布时间】:2021-07-18 15:48:02
【问题描述】:

将多维数组中的数据按一列分组并从每组中的另一列创建一个子数组的最佳方法是什么?

$array = [
    ['idAnswer' => 209, 'idQuestion' => 141],
    ['idAnswer' => 1668, 'idQuestion' => 141],
    ['idAnswer' => 211, 'idQuestion' => 142]
];

我需要得到:[['209', '1668'], ['211']]

这样做的方法是什么?

【问题讨论】:

标签: php arrays multidimensional-array grouping merging-data


【解决方案1】:

我似乎还找不到确切的副本(他们中的大多数人都想保留一整行数据),所以我会在此期间发布一个答案。

使用结果数组中的临时一级键进行分组,然后将出现的新元素推送到每个组中。

代码:(Demo)

$array = [
    ['idAnswer' => 209, 'idQuestion' => 141],
    ['idAnswer' => 1668, 'idQuestion' => 141],
    ['idAnswer' => 211, 'idQuestion' => 142]
];

$result = [];
foreach ($array as $row) {
    $result[$row['idQuestion']][] = $row['idAnswer'];
}
var_export(array_values($result));

输出:

array (
  0 => 
  array (
    0 => 209,
    1 => 1668,
  ),
  1 => 
  array (
    0 => 211,
  ),
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2021-08-26
    • 2017-05-15
    相关资源
    最近更新 更多