我正在研究两天的关联数组,但不知何故无法达到我的答案。我正在使用for循环,让我知道是否有更好的方法来做到这一点..让我假设我有一个像下面这样的关联数组
$students = array('a' => 84 , 'b' => 92 , 'a' => 93 , 'b' => 47 , 'c' => 73 ,
'd' => 59 , 'e' => 91 , 'a' => 78 , 'c' => 85 ,'e' => 68 ,
'c' => 84 , 'a' => 100 ,'d' => 92 , 'e' => 85 , 'd' => 83 ,
'a' => 92 , 'b' => 68 , 'b' => 79 ,'d' => 79 , 'a' => 84 ,
'b' => 89 , 'c' => 69 , 'c' => 67 ,'c' => 92 , 'd' => 73 ,
'e' => 79 , 'e' => 84);
我希望这个数组转换成一个多维数组,取所有' a'并将其放入一个阵列中' a'并对其余部分应用相同的规则,如下所示。 输出应该是这样的。
$students = array('a' => array(84, 93, 88, 100, 92, 84),
'b' => array(92, 47, 68, 79, 89),
'c' => array(73, 85, 84, 69, 67, 92),
'd' => array(59, 92, 83, 79, 73),
'e' => array(91, 68, 85, 79, 84));
我该怎么做?谢谢:)
答案 0 :(得分:1)
您似乎没有理解的问题是您没有看起来像您建议的数组。
如果在创建后显示该数组,则可以使用
<?php
$students = array('a' => 84 , 'b' => 92 , 'a' => 93 , 'b' => 47 , 'c' => 73 ,
'd' => 59 , 'e' => 91 , 'a' => 78 , 'c' => 85 ,'e' => 68 ,
'c' => 84 , 'a' => 100 ,'d' => 92 , 'e' => 85 , 'd' => 83 ,
'a' => 92 , 'b' => 68 , 'b' => 79 ,'d' => 79 , 'a' => 84 ,
'b' => 89 , 'c' => 69 , 'c' => 67 ,'c' => 92 , 'd' => 73 ,
'e' => 79 , 'e' => 84);
print_r($students);
此输出
Array
(
[a] => 84
[b] => 89
[c] => 92
[d] => 73
[e] => 84
)
每次重复使用某个密钥时,请说a
它会使用a
所以基本上你没有你认为的阵列,因此你无法将它转换成任何东西
答案 1 :(得分:0)
这样的东西? https://eval.in/626246
<?php
$students = [
['a', 84], ['b', 47], ['c', 73],
['a', 92], ['a', 93], ['b', 68],
];
$groups = [];
foreach ($students as list($class, $number)) {
$groups[$class][] = $number;
}
ksort($groups);
foreach ($groups as &$numbers) {
sort($numbers);
}
unset($numbers); // Do not forget unsetting variable reference
print_r($groups);