在PHP中我们有函数array_flip用于在数组中交换所有键及其关联值,但是我在php函数的帮助下寻找解决方案
INPUT
"=====[ On vim load, toggle NERDTree and switch to file ]=====
if typefile != 'file'
autocmd VimEnter * :NERDTreeToggle | wincmd l
endif
输出
array(
"a" => 1,
"b" => 1,
"c" => 2
);
答案 0 :(得分:1)
我认为它没有PHP功能,所以你必须自己编写。如果你真的想要嵌套数组和值的混合,那么可以采用:
function my_array_flip($arr)
{
$new_arr = array();
foreach ($arr as $k => $v)
{
if (array_key_exists($v, $new_arr))
{
if (is_array($new_arr[$v]))
{
$new_arr[] = $k;
}
else
{
$new_arr[$v] = array($new_arr[$v]);
$new_arr[$v][] = $k;
}
}
else
{
$new_arr[$v] = $k;
}
}
return $new_arr;
}
对于你的阵列,这将返回:
Array
(
[1] => Array
(
[0] => a
[1] => b
)
[2] => c
)
答案 1 :(得分:0)
$source = array(
"a" => 1,
"b" => 1,
"c" => 2
);
foreach ($source as $key => $value)
{
$result[$value][] = $key;
}
答案 2 :(得分:0)
不要认为存在功能,但你可以通过一些代码实现它:
$input = [
"a" => 1,
"b" => 1,
"c" => 2,
];
$grouped = [];
foreach ($input as $key => $group) {
$grouped[$group][] = $key;
}
结果:
var_dump($grouped);
array(2) {
[1] =>
array(2) {
[0] =>
string(1) "a"
[1] =>
string(1) "b"
}
[2] =>
array(1) {
[0] =>
string(1) "c"
}
}
将数组始终设置为值,因为我猜这会在您在代码中使用结果时简化操作。