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