function group_by($array) {
foreach($array as $key => $val){
$str = substr($key, 0, strpos($key, "_"));
$newarr[$str][$key] = $val;
}
return $newarr;
}
$array = array("program_12" => 3,
"run_7" => 8,
"program_17" => 5,
"run_6" => 2,
"program_19" => 3,
"run_16" => 9);
$newarr = group_by($array);
var_dump($newarr);
/*
run:
array(2) {
["program"]=>
array(3) {
["program_12"]=>
int(3)
["program_17"]=>
int(5)
["program_19"]=>
int(3)
}
["run"]=>
array(3) {
["run_7"]=>
int(8)
["run_6"]=>
int(2)
["run_16"]=>
int(9)
}
}
*/