对于图表图形(我在其中显示本周的赢家和输家),我需要多维数组,因此需要以下函数对它们进行排序:
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的用户。所以把它们整理一下。如何将这些附加信息放入此功能?我对此不太熟悉,所以希望有人能帮助我,好吗?!
与其重写数组来执行此操作,不如使用内置的usort
或uasort
函数。有了这些,您可以实现自己的排序回调,并更容易地实现这一点:
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的类属性中)