Php 比较两个数组的值如何具有相同的键和长度

Php 比较两个数组的值如何具有相同的键和长度,php,arrays,Php,Arrays,我想比较两个键相同且长度相同的数组的值 阵列 $anna_array = array("soccer" => "10", "basketball" => "20", "atletics" => "40"); $john_array = array("soccer" => "15", "basketball" => "15", "atletics" => "45"); 我想要一些像: <?php if ($anna_array['soccer'] >

我想比较两个键相同且长度相同的数组的值

阵列

$anna_array = array("soccer" => "10", "basketball" => "20", "atletics" => "40");
$john_array = array("soccer" => "15", "basketball" => "15", "atletics" => "45");
我想要一些像:

<?php
if ($anna_array['soccer'] > $john_array['soccer']){
    $points = "1";
} else {
    $points = "0";
}
?>

然后我将在结果中使用$points:

<?php
foreach ($anna_array as $x => $x_value) {
$speler1_prestaties = "<span class=\"white bold\">".str_pad($count1++, 2, "0", STR_PAD_LEFT)."</span> ".$x.": 
<span class=\"orange\">".$x_value." "(".$points .")></span><br />";     
echo $player1_info;
?>

只需使用foreach并通过键进行比较:

foreach($anna as $key => $val){
    if(array_key_exists($key, $john)){
         if($val > $john[$key]){
             $points["john"] += 1;
         } else {
             $points["anna"] += 1;
         }
    }
}

我希望我正确理解了您的问题。

首先,您可以先应用
array\u intersect\u key
检索常用键,然后再应用
array\u key

$common_sports = array_keys(array_intersect_key($anna_array, $john_array));
然后您可以使用
array\u fill\u keys
使用上面找到的相同键填充数组

$points_anna_array = $points_john_array = array_fill_keys($common_sports, 0);
此处生成的数组是:

 array(3) {
  ["soccer"]=>
  int(0)
  ["basketball"]=>
  int(0)
  ["atletics"]=>
  int(0)
}
现在你可以比较安娜和约翰的活动

foreach ($common_sports as $common_sport) {
    if ($anna_array[$common_sport] > $john_array[$common_sport]) {
        $points_anna_array[$common_sport]++;
    } else if ($anna_array[$common_sport] < $john_array[$common_sport]) {
        $points_john_array[$common_sport]++;
    }
}
$points\u john\u数组
值:

array(3) {
  ["soccer"]=>
  int(1)
  ["basketball"]=>
  int(0)
  ["atletics"]=>
  int(1)
}
因此:

这将输出:

Anna(soccer) 0 vs John(soccer) 1
Anna(basketball) 1 vs John(basketball) 0
Anna(atletics) 0 vs John(atletics) 1

要获得总分,可以使用
array\u sum

echo "John's total score: ", array_sum($points_john_array);
echo "Anna's total score: ", array_sum($points_anna_array);

您已经比较了具有相同密钥的两个数组。你想做什么?预期输出是什么?嗨,费德里科,这有点像一场比赛的结果。在足球比赛中,安娜进了10个球,约翰进了15个球。安娜得1分,约翰得0分。输出结果应该是:安娜(足球)1对约翰(足球)0。你想为
篮球
atletics
?@Fedrico也这样做。对使用数组_intersect _key,我成功地获得了两个具有相同键和长度的数组。如果出现平局怎么办?@非常感谢费德里科:)这正是我想要的。@AnnaZina,我添加了一个示例来获得数组的总分。非常感谢。弗雷德里科给了我我想要的。我还将使用您的代码来获得总体结果。它工作得很好:)
Anna(soccer) 0 vs John(soccer) 1
Anna(basketball) 1 vs John(basketball) 0
Anna(atletics) 0 vs John(atletics) 1
echo "John's total score: ", array_sum($points_john_array);
echo "Anna's total score: ", array_sum($points_anna_array);