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

时间:2019-02-26 10:19:46

标签: php html

我在PHP中有以下代码:

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

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

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

3 个答案:

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

以此类推。