我正在寻找一种优雅的方式来改变这个阵列:
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 )
)
注意:,键或值之间没有关系。它们完全是任意的,仅用作示例。生成的数组应该是一个按输入数组的值分组的关联数组。
谢谢!
答案 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
的原始数组。