我在PHP
中有以下代码:
$groupA = Array($russiapoints, $arabiapoints, $egyptpoints, $uruguaypoints);
rsort($groupA);//sort
$Awinner = $groupA[0];
$Arunner = $groupA[1];
我可以在第2行和第3行之间插入一些内容,以便从数组中提取变量名并将它们显示在单独的数组中吗?
想简单地指出我以前对PHP的了解很少,所以请不要对我的知识做任何假设。
答案 0 :(得分:0)
按照书面规定,您的数组将不包含变量的原始名称,而仅包含变量的值。
您将需要显式跟踪该信息,例如作为数组键。对于一个持久的硬编码集,可能就足够了:
$groupA = [
'russia' => $russiapoints,
'arabia' => $arabiapoints,
'egypt' => $egyptpoints,
'uruguay' => $uruguaypoints,
];
// if you want to retrieve just keys later
$keys = array_keys( $groupA );
答案 1 :(得分:0)
我认为您需要为A组球队维护记分卡,然后在列表中找到获胜者和亚军。为此,我建议您将记分卡记录在以下结构中。
$groupA = [
[
'name' => 'Russia',
'points' => 12
],
[
'name' => 'China',
'points' => 11,
],
[
'name' => 'France',
'points' => 20,
],
[
'name' => 'USA',
'points' => 10,
]
];
现在,我们可以处理此数组以找出获胜者(得分最高的团队)和亚军(得分第二高的团队)。为此,我们将需要根据得分以相反的顺序对数组进行排序。我添加了一个功能来做到这一点。
function comparePoints($a, $b)
{
if ($a['points'] == $b['points']) {
return 0;
}
return $a['points'] < $b['points'] ? 1 : -1;
}
并使用此函数对我的数组进行排序。
usort($groupA, 'comparePoints');
现在,阵列将得分最高的团队排在第一位。我会找到获胜者,第一名和第二名,如下。
$winner = array_shift($groupA);// first one in the array
$firstRunnerUp = array_shift($groupA); // second one in the array
$secondRunnerUp = array_shift($groupA); // third one in the array
现在只需尝试print_r($winner);
。输出将为
Array
(
[name] => France
[points] => 20
)
注意:如果两支球队的积分相同,我没有考虑过这种情况。您将需要找到该问题的解决方案。
详细了解uasort
详细了解array_shift
答案 2 :(得分:0)
$groupA = compact('russiapoints', 'arabiapoints', 'egyptpoints', 'uruguaypoints');
arsort($groupA);//sort
$Awinner = key($groupA);next($groupA);
$Arunner = key($groupA);next($groupA);
以此类推。