I have an array like this one:
$toSort = array( 1 => [ 'value' => 8000, 'key' => 1007 ], 2 => [ 'value' => 8001, 'key' => 1007 ], 3 => [ 'value' => 8002, 'key' => 1013 ], );
I want to sort and restructure it like this:
$toSort = array( 1007 => [ [0] => 8000, [1] => 8001 ], 1013 => [ [0] => 8002 ] );
It should work for a random amount of different entries (diffrent keys/values).
Advertisement
Answer
How about something like this?
//A new array to move the data to. var $result = array(); //Loop through the original array, and put all the data //into result with the correct structure. foreach($toSort as $e) { //If this key is not set yet, then create an empty array for it. if(!isset($result[$e['key']])) $result[$e['key']] = array() //Add the value to the end of the array. $result[$e['key']][] = $e['value']; } //Sort the result, based on the key and not the value. //If you want it to be based on value, just use sort() instead. ksort($result) //If you want the sub-arrays sorted as well, loop through the array and sort them. foreach($result as $e) sort($e);
Disclaimar: I have not tested this code.