Creating an associative array based on the values โ€‹โ€‹of another associative array

I am looking for an elegant way to turn this array:

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

To this array:

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

Note. , there is no relationship between keys and values. They are completely arbitrary and are used only as examples. The resulting array must be an associative array, grouped by the values โ€‹โ€‹of the input array.

Thanks!

+4
source share
2 answers
 $input = array( 'foo' => 1, 'bar' => 1, 'zim' => 3, 'dib' => 6, 'gir' => 1, 'gaz' => 3 ) $output = array(); foreach ( $input as $k => $v ) { if ( !isset($output[$v]) ) { $output[$v] = array(); } $output[$v][] = $k; } 
+12
source

I think everything will be fine:

 foreach ($arr1 as $k => $val) $arr2[$val][] = $k; 

where $arr1 is the original array outputting the new array to $arr2 .

+3
source

Source: https://habr.com/ru/post/1307580/


All Articles