多维数组-计数从100开始的排序函数


Multidimensional Arrays - Sort-function with count beginning at 100

对于图表图形(我在其中显示本周的赢家和输家),我需要多维数组,因此需要以下函数对它们进行排序:

function sort_winner($a,$subkey) {
    foreach($a as $k=>$v) {
        $b[$k] = strtolower($v[$subkey]);
    }
    if ($_GET["winner"] == 1) { arsort($b); } else { asort($b); }
    foreach($b as $key=>$val) {
        $c[] = $a[$key];
    }
    return $c;
}
$winner = sort_winner($winner,$sortoption); 

到目前为止,一切都很好。一切正常!

现在,我想只显示在其数组中的一个数组上计数超过100的用户。所以把它们整理一下。如何将这些附加信息放入此功能?我对此不太熟悉,所以希望有人能帮助我,好吗?!

与其重写数组来执行此操作,不如使用内置的usortuasort函数。有了这些,您可以实现自己的排序回调,并更容易地实现这一点:

function winner_sort($a, $b) {
    global $key;
    return strcmp($a[$key], $b[$key]);
}
$key = $sortoption;
uasort($winner, 'winner_sort');
if ($_GET['winner'] == "1") {
    $winner = array_reverse($winner);
}

在"仅显示计数超过100的用户"方面,您需要筛选:

function winner_filter($item) {
    global $key;
    return $item[$key] > 100;
}
$winner = array_filter($winner, 'winner_filter');

(另外:如果你能帮上忙,就避免$key全局。不过我不确定你的用例是什么。如果必须这样做,使用带有uses ($key)的PHP 5.3的匿名函数会更好,或者在<5.3的类属性中)