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

时间:2010-04-21 18:24:35

标签: php arrays associative-array

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

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 )
)

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

谢谢!

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:3)

我认为这样做会很好:

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

其中$arr1是将新数组输出到$arr2的原始数组。