猿问

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

像这样转换数组的最有效方法是什么:

[ [ '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 中?


子衿沉夜
浏览 95回答 1
1回答

摇曳的蔷薇

如果您指的是性能最佳,那么在 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);恢复为普通数字索引。
随时随地看视频慕课网APP
我要回答