получение списка первой десятки из многомерного массива без повторяющихся записей - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь получить список первой десятки из многомерного массива, который я получаю из API.Я пробовал решение, данное на stackoverflow, и оно вроде работаетЭто дает мне первую десятку записей массива.Осталась только одна проблема: дубликаты записей.

Я пробовал array_unique, но он не работает.Вы видите это в примере кода.Я не хочу, чтобы повторяющиеся записи были удалены.Таким образом, есть список лучших десяти вратарей.Список, который мне нужен, выглядит следующим образом:

 Name - 17 Goals
 Name - 10 Goals
 Name - 10 Goals
 Name - 9 Goals

и т. Д.

Таким образом, в десятку вошли те, кто забил одинаковое количество голов.Я надеюсь, что это объясняет это достаточно хорошо.

Я получаю список из 18+ записей из десяти лучших значений.Как я могу получить первые десять значений с учетом дублирующих целей?

<code><?php
function topTenGoalGetter()
{
    $json_file     = @file_get_contents('https://www.openligadb.de/api/getgoalgetters/bl1/2018');
    $entries       = json_decode($json_file, true);
    $goalgetter    = $entries;
    $return_topten = array();
    $goals         = array();
    foreach ($entries as $entry) {
        array_push($goals, $entry['GoalCount']);
    }
    $total    = count($goals);
    $counter  = 1;
    $for_show = 10;
    while ($counter <= $total - $for_show) {
        $counter++;
        $key = array_search(min($goals), $goals);
        unset($goals[$key]);
    }
    foreach ($entries as $entry) {
        foreach ($goals as $key => $value) {
            if ($entry["GoalCount"] == $value) {
                array_push($return_topten, $entry);
            }
        }
    }
    return $return_topten;
}
?>
<div class="bl-torschuetzen">
    <div class="bl-torschuetzen-entries">
        <span>Test</span>
        <pre>
            <?php var_dump(topTenGoalGetter());?>
        

1 Ответ

2 голосов
/ 09 апреля 2019

Из источника , Вы можете попробовать это сделать уникальный многомерный массив

$a = topTenGoalGetter();
$input = array_slice(array_values(array_map("unserialize", array_unique(array_map("serialize", $a)))),0,10);
...