Многомерные массивы - функция сортировки с отсчетом, начинающимся с 100 - PullRequest
0 голосов
/ 22 января 2012

Для диаграммы-графика (где я отображаю победителя и проигравшего недели) мне нужны многомерные массивы и, следовательно, следующая функция для их сортировки:

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 счетчиков.Так что разберитесь с ними.Как поместить эту дополнительную информацию в эту функцию?Я не совсем знаком с этим, так что, надеюсь, кто-нибудь может мне помочь, пожалуйста? *

1 Ответ

0 голосов
/ 23 января 2012

Вместо того, чтобы переписывать ваши массивы, для этого лучше использовать встроенные функции 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. Однако я не уверен, каков ваш вариант использования. Если вам придется сделать это, анонимная функция, использующая PHP 5.3 с uses ($key), будет лучшая идея, или в свойстве класса для <5.3) </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...