基于另一个关联数组的值构建关联数组

mač*_*ček 4 php arrays associative-array

我正在寻找一种优雅的方式来改变这个数组:

Array (
  [foo] => 1
  [bar] => 1
  [zim] => 3
  [dib] => 6
  [gir] => 1
  [gaz] => 3
)
Run Code Online (Sandbox Code Playgroud)

进入这个数组:

Array (
  [1] => Array ( foo, bar, gir ),
  [3] => Array ( zim, gaz ),
  [6] => Array ( dib )
)
Run Code Online (Sandbox Code Playgroud)

注意:键或值之间没有关系.它们完全是任意的,仅用作示例.结果数组应该是一个按输入数组的值分组的关联数组.

谢谢!

hsz*_*hsz 12

$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;
}
Run Code Online (Sandbox Code Playgroud)