簡體   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