Foreach с таблицей — PHP и API Leaguepedia

У меня есть этот код, чтобы показать, сколько раз чемпион был выбран, например, в турнире («Грагас: 2 раза», «Синдра: 4 раза» и т. д.)

Я использую API из LeaguePedia для получения информации

но я застрял прямо сейчас, у меня проблема с "эхо" моей таблицы, чтобы показать результаты. Поэтому я хочу, чтобы «qtd» был рядом с «выбором» (Image1), и если есть простой способ показать, что я хочу.

// $Result is a CURL coming from leaguepedia api
$result = json_decode($file_contents);

// Double foreach to access the values from leaguepedia api
foreach ($result as $d) {
    foreach ($d as $data) {
        // $data->title->Team1Picks  is coming from league pedia api as a string separated by "," Ex:("Gragas,Shen,Maokai,etc")
        // So I need to explode to an array to count.
        $picks[] = explode(",", $data->title->Team1Picks);
    }
}

// $mostpicked is an array for me to count how many times a champion was picked
// $f is an array to see the names of the picked champions
foreach ($picks as $pick) {
    foreach ($pick as $total) {
        $mostPicked[] = $total;
        $f[] = $total;
    }
}

// Basically here I'm  counting how many times a champion was picked Ex : ("Gragas:2","Syndra:4" ,etc)     
asort($mostPicked);

$mostPicked = array_count_values($mostPicked);

$name = array_unique($f);

asort($name);

// Foreach to get all unique names from the picks Ex : ("Gragas","Shen",etc) instead of ("Gragas , "Gragas" , etc)
foreach ($name as $champ) {
    echo "<tr>";
    echo "<td>" . $champ . "</td>";
    echo "</tr>";
}

// This foreach to get the number of times a pick was made Ex : ("Gragas 2 Times")
foreach ($mostPicked as $pick) {    
    echo "<tr>";
    echo "<td>" . $pick . "</td>";   
    echo "</tr>";
}

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
59
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Кажется, потому что ты ставишь $pick в новый <tr>

Попробуйте настроить свои циклы так, чтобы вы строили массив $champ=>$qtd, затем вы повторяли это и строили свою таблицу по желанию.

Ответ принят как подходящий

Вот, это должно сработать.

// Hero name => pick count
$heroPicks = array();
foreach ($result as $d) {
    foreach ($d as $data) {
        //$data->title->Team1Picks  is coming from league pedia api as a string separated by "," Ex:("Gragas,Shen,Maokai,etc")
        // So i need to explode to an array to count.
        $picks = explode(",", $data->title->Team1Picks);
        foreach ($picks as $pick) {
            $pick = trim($pick);
            if (!array_key_exists($pick, $heroPicks)) {
                $heroPicks[$pick] = 0;
            }
            $heroPicks[$pick] += 1;
        }
    }
}

uasort($heroPicks, function($a, $b) {
    return $a - $b;
});
$heroPicks = array_reverse($heroPicks);

echo "Best picks:".PHP_EOL."<br />";
foreach ($heroPicks as $heroName => $pickCount) {
    echo $heroName." - ".$pickCount.PHP_EOL."<br />";
}

Я настроил отображение в своей таблице, и это сработало очень хорошо, спасибо, чувак!

Lucas Ln 22.12.2020 01:31

Другие вопросы по теме