Saqlain Syed - 1 year ago 44

PHP Question

I am working on associative arrays from two days, but somehow could not reach to my answer. I am using for loop for this, let me know if there some better approach to do this.. let suppose I have an associative array like below

`$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);

and I want this array to convert into a multidimensional array, take all values of 'a' and put this into an array 'a' and apply the same rule for the rest like given below.

The out put should be like.

`$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));

How should I do this ? Thanks :)

Answer Source

Something like this? 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);
```