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);