为了账号安全,请及时绑定邮箱和手机立即绑定

在 PHP 中,将每个具有唯一值的重复名称的二维数组转换为具有多个值的唯一名称的二维数组

在 PHP 中,将每个具有唯一值的重复名称的二维数组转换为具有多个值的唯一名称的二维数组

PHP
子衿沉夜 2023-06-18 16:19:50
像这样转换数组的最有效方法是什么:[ [ 'Quiz 1' , 89 ] , ['Quiz 2' , 78] , ['Quiz 1' , 56] , ['Quiz 1' , 25] , ['Quiz 2' , 87] , ['Quiz 3' , 91] ]对此:[ [ 'Quiz 1' , 89, 56, 25] , ['Quiz 2' , 78, 87] , ['Quiz 3' , 91] ]在 PHP 中?
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

如果您指的是性能最佳,那么在 foreach 循环中迭代是最有效的方法。这可能不是最优雅的方式。您也可以使用array_map或其他类似的;每个人的喜好。在任何情况下,通过使用测验编号作为分组键。这是简单的:


$vars = [ [ 'Quiz 1' , 89 ] , ['Quiz 2' , 78] , ['Quiz 1' , 56] , ['Quiz 1' , 25] , ['Quiz 2' , 87] , ['Quiz 3' , 91] ];


$grouped = [];

foreach($vars as $var) {

    empty($grouped[$var[0]]) && $grouped[$var[0]] = [$var[0]]; // If Quiz # must go in.

    $grouped[$var[0]][] = $var[1];

}

输出:


Array [

    [Quiz 1] => [

        [0] => Quiz 1

        [1] => 89

        [2] => 56

        [3] => 25

    ]

    [Quiz 2] => [

        [0] => Quiz 2

        [1] => 78

        [2] => 87

    ]

    [Quiz 3] => [

        [0] => Quiz 3

        [1] => 91

    ]

]

您会注意到这些值以 Quiz # 作为键进行分组。(必需。)使数组中的第一个条目变得多余。如果不需要数组内测验编号,请注释掉循环的第一行。如果您需要它并且不喜欢用作键的测验数字,请完成以$grouped = array_values($grouped);恢复为普通数字索引。


查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信