2016-01-30 69 views
1

我想的值與john_array然後比較sandra_arraysem_array比較ARRAY1與多維數組的數組(數組2&ARRAY3)

我可以比較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); 

,然後用foreach我會先比較桑德拉的點與約翰的點,然後用點教統局局長。但我不知道該怎麼做。

你能幫我解決嗎?

回答

1

的解決方案是:

  • 首先聲明包含的對手玩家的陣列的陣列,這樣的:

    $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) 
+0

非常感謝您@Rajdeep保羅:) –

+0

@AnnaZina非常歡迎! :) –