从数组创建一个具有重复值的数组(PhP)

Kev*_*ude 5 php arrays max

我想从一个数组创建一个具有重复MAX值的新数组,并将其他重复值放在另一个数组中

      $etudiant = array ('a'=>'2','b'=>'5', 'c'=>'6', 'd'=>'6', 'e'=>'2');
Run Code Online (Sandbox Code Playgroud)

我想要这个结果

     $MaxArray =  array ('c'=>'6', 'd'=>'6');
     $otherarray1 =  array ('a'=>'2', 'e'=>'2');
Run Code Online (Sandbox Code Playgroud)

谢谢 !

net*_*der 2

首先,找到最大值:

$etudiant = array ('a'=>'2','b'=>'5', 'c'=>'6', 'd'=>'6', 'e'=>'2');
$maxValue = max($etudiant);
Run Code Online (Sandbox Code Playgroud)

其次,查找出现多次的值:

$dups = array_diff_assoc($etudiant, array_unique($etudiant));
Run Code Online (Sandbox Code Playgroud)

最后,检查原始数组$maxValue中是否有与以下列出的值匹配的值$dups

$MaxArray = $OtherArray = $ElseArray = array();
foreach ($etudiant as $key => $value) {
    if ($value == $maxValue) {
        $MaxArray[$key] = $value;
    } else if (in_array($value, $dups)) {
        $OtherArray[$key] = $value;
    } else {
        $ElseArray[$key] = $value;
    }
}
Run Code Online (Sandbox Code Playgroud)

你会得到:

$MaxArray: Array
(
    [c] => 6
    [d] => 6
)
$OtherArray: Array
(
    [a] => 2
    [e] => 2
)
Run Code Online (Sandbox Code Playgroud)

注意:我不确定您是否希望$MaxArray仅当最大值元素在源数组中出现多次时才包含最大值元素。如果是这样,只需将调用更改max为:

$maxValue = max($dups);
Run Code Online (Sandbox Code Playgroud)