将 array1 与多维数组(Array2 和 array3)的数组进行比较


Compare array1 with the arrays of a multidimensional array (Array2 & array3)

我想将sandra_array的值与john_array进行比较,然后再与sem_array进行比较。

我可以将sandra_arrayjohn_array进行比较:

<?php
$sandra_array = array("soccer" => "10", "basketball" => "20", "atletics" => "40");
$john_array = array("soccer" => "15", "basketball" => "15", "atletics" => "45");
$sem_array = array("soccer" => "5", "basketball" => "10", "atletics" => "50");
$common_sports = array_keys(array_intersect_key($sandra_array, $john_array));
$points_sandra_array = $points_john_array = array_fill_keys($common_sports, 0);
foreach ($common_sports as $common_sport) {
if ($sandra_array[$common_sport] > $john_array[$common_sport]) {
    $points_sandra_array[$common_sport]++;
} else if ($sandra_array[$common_sport] < $john_array[$common_sport]) {
    $points_john_array[$common_sport]++;
}
}
foreach ($common_sports as $common_sport) {
}
echo "Sandra (", array_sum($points_sandra_array).") vs John (", array_sum($points_john_array).")";
?>

结果

Sandra (1) vs John (2)

我也想得到桑德拉对塞姆的结果。喜欢这个:

Sandra (1) vs John (2)
Sandra (2) vs Sem(1)

我正在考虑制作以下多维数组:

$array_other_players = array($john_array,$sem_array);

然后,我将首先将桑德拉的观点与约翰的观点进行比较,然后与塞姆的观点进行比较。但我不知道该怎么做。

你能帮我这个吗?

解决方案是:

  • 首先声明一个包含对手玩家数组的数组,如下所示:

    $players_array = array('John' => $john_array, 'Sem' => $sem_array);
    
  • 然后循环遍历每个对手玩家,计算最终得分。

所以你的代码应该是这样的:

$sandra_array = array("soccer" => "10", "basketball" => "20", "atletics" => "40");
$john_array = array("soccer" => "15", "basketball" => "15", "atletics" => "45");
$sem_array = array("soccer" => "5", "basketball" => "10", "atletics" => "50");
// Declare an array containing opponents players' array
$players_array = array('John' => $john_array, 'Sem' => $sem_array);
// Loop through each opponent player to calculate the final score
foreach($players_array as $opponent_player => $opponent_player_array){
    $common_sports = array_keys(array_intersect_key($sandra_array, $opponent_player_array));
    $points_sandra_array = $points_opponent_array = array_fill_keys($common_sports, 0);
    foreach ($common_sports as $common_sport) {
        if ($sandra_array[$common_sport] > $opponent_player_array[$common_sport]) {
            $points_sandra_array[$common_sport]++;
        } else if ($sandra_array[$common_sport] < $opponent_player_array[$common_sport]) {
            $points_opponent_array[$common_sport]++;
        }
    }
    echo "Sandra (". array_sum($points_sandra_array).") vs {$opponent_player} (". array_sum($points_opponent_array) .")<br />";
}

输出:

Sandra (1) vs John (2)
Sandra (2) vs Sem (1)