Php 筛选具有相同值的数组键

Php 筛选具有相同值的数组键,php,Php,我有以下数组: $bonusstatsarray = array( "bonusStat0"=> "10", "bonusStat1"=> "71", "bonusStat2"=> "40", "bonusStat3"=> "20",

我有以下数组:

$bonusstatsarray = array(
        "bonusStat0"=> "10",
        "bonusStat1"=> "71",
        "bonusStat2"=> "40",
        "bonusStat3"=> "20",
        "bonusidbonusstat0"=> "40",
        "bonusidbonusstat1"=> "71",
    );
我想找到所有具有相同值的数组键。因此,我使用的是
数组过滤器()

这是目前的输出:

Array
(
    [bonusStat1] => 71
    [bonusStat2] => 40
    [bonusidbonusstat0] => 40
    [bonusidbonusstat1] => 71
)
如何更改输出数组的结构,如下所示:

Array
( 
     [0] => Array (  [bonusStat1] => 71
                     [bonusidbonusstat1] => 71
                   )
     [1] => Array (  [bonusStat2] => 40
                     [bonusidbonusstat0] => 40
                   )
)

创建将值用作键的关联数组,并将元素分组到该数组中

$result = [];
foreach ($bonusstatsarray as $key => $value) {
    if (isset($result[$value])) {
        $result[$value][$key] = $value;
    } else {
        $result[$value] = [$key => $value];
    }
}
$result = array_values(array_filter($result, function($list) { return count($list) > 1; })); // remove values that aren't duplicated

停止使用
create\u函数
,它已被弃用。使用匿名函数。谢谢。如何更改数组键具有连续数字的脚本,例如:
[0]=>array
然后
[1]=>array
等等?对结果使用
array\u values()
将其规范化。非常好,谢谢。
$result = [];
foreach ($bonusstatsarray as $key => $value) {
    if (isset($result[$value])) {
        $result[$value][$key] = $value;
    } else {
        $result[$value] = [$key => $value];
    }
}
$result = array_values(array_filter($result, function($list) { return count($list) > 1; })); // remove values that aren't duplicated