Создание ассоциативного массива на основе значений другого ассоциативного массива

Я ищу элегантный способ превратить этот массив:

Array ( [foo] => 1 [bar] => 1 [zim] => 3 [dib] => 6 [gir] => 1 [gaz] => 3 ) 

В этот массив:

 Array ( [1] => Array ( foo, bar, gir ), [3] => Array ( zim, gaz ), [6] => Array ( dib ) ) 

Примечание: между ключами и значениями нет отношения. Они полностью произвольны и используются только в качестве примеров. Результирующий массив должен быть ассоциативным массивом, сгруппированным по значениям входного массива.

Благодаря!