繁体   English   中英

如何在PHP中将变量名的一部分提取为字符串?

[英]How to extract part of the name of a variable as a string in PHP?

我在PHP有以下代码:

$groupA = Array($russiapoints, $arabiapoints, $egyptpoints, $uruguaypoints);
rsort($groupA);//sort
$Awinner = $groupA[0];
$Arunner = $groupA[1];

我可以在第2行和第3行之间插入一些内容,以便从数组中提取变量名并将它们显示在单独的数组中吗?

要简要指出一下,我以前对PHP的了解很少,所以请不要对我的知识做任何假设。

如所写,您的数组将不包含变量的原始名称,仅包含它们的值。

您将需要显式跟踪该信息,例如作为数组键。 对于一个持久的硬编码集,可能就足够了:

$groupA = [
'russia'  => $russiapoints, 
'arabia'  => $arabiapoints, 
'egypt'   => $egyptpoints, 
'uruguay' => $uruguaypoints,
];

// if you want to retrieve just keys later

$keys = array_keys( $groupA );

我认为您需要为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的更多信息

$groupA = compact('russiapoints', 'arabiapoints', 'egyptpoints', 'uruguaypoints');
arsort($groupA);//sort
$Awinner = key($groupA);next($groupA);
$Arunner = key($groupA);next($groupA);

等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM