Intereting Posts
создать пользовательскую прямую ссылку для загрузки ссылки на Google Как вставить изображение в php-почту? Сортировка массива на основе значения дочернего объекта Рекомендуемый способ хранения строк для многоязычного PHP-приложения Метод Joomla 1.6 JCategories :: get () создает «PHP Fatal error: Allowed memory outed» в пользовательском компоненте MVC лучший подход для слайдера jQuery с динамическим представлением / следующим контентом? Если в модели или контроллере выбираются зависимые строки? Как я могу защитить паролем загрузку бинарного файла? Сбои с переменной сеанса PHP после отправки формы Создание файла xls из соответствующего xml Соединение Mysql не работает на AWS EC2 Получить имя хоста из IP-адреса Что значит ? среднее значение в php при чтении и интерпретации URL-адреса Ошибка «Class HTML not found» в Laravel 4 Ошибка Laravel 5.5 при попытке отправить почту с использованием почты PHP (): ожидаемый код ответа 250, но получил код «550»,

Объединение нескольких массивов в один массив

Я вытаскиваю список жанров из базы данных, и я пытаюсь сортировать их по наиболее распространенным событиям. Но когда я вытаскиваю их из базы данных, они все еще разделены:

Array ( [0] => Blues Rock [1] => Garage Rock [2] => Hard Rock ) Array ( [0] => Garage Rock [1] => Blues Rock [2] => Hard Rock ) 

Но я хочу, чтобы он вышел в один массив, который можно отсортировать, чтобы вытащить верхние жанры. Он должен выглядеть как жанры: Garage Rock, Blues Rock, Hard Rock

Вот мой код:

 $genreSql = "SELECT `genres` FROM `song_genres` WHERE `album_id` = '$album_id' AND `band_id` = '$band_id'"; $queryGenre = mysqli_query($conn, $genreSql) or die (mysqli_error($conn)); while ($rowG = mysqli_fetch_array($queryGenre)){ $genres = $rowG['genres']; // Goes into the db as a string. Eg "Str1, Str2, Str3" $genres = explode(", ", $genres); echo "<pre>"; print_r($genres); echo "</pre>"; 

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

Возможно, я не знаю, что делаю, потому что я все еще дерьмо, когда дело доходит до массивов, но, может быть, ветераны php найдут что-то.

Related of "Объединение нескольких массивов в один массив"

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

Но теперь вы можете сделать что-то подобное

 $array_of_array_of_genres[] = [ 'Blues Rock', 'Garage Rock', 'Hard Rock',]; $array_of_array_of_genres[] = [ 'Garage Rock', 'Blues Rock', 'Hard Rock']; $array_of_array_of_genres[] = [ 'POP', 'Hard Rock']; $all_genres = call_user_func_array('array_merge', $set_of_set_of_genres); // {"0":"Blues Rock","1":"Garage Rock","2":"Hard Rock","3":"Garage Rock","4":"Blues Rock","5":"Hard Rock","6":"POP","7":"Hard Rock"} $count_genres = array_count_values($all_genres); // {"Blues Rock":2,"Garage Rock":2,"Hard Rock":3,"POP":1} arsort($count_genres); // {"Hard Rock":3,"Garage Rock":2,"Blues Rock":2,"POP":1} $result = array_keys($count_genres); // {"0":"Hard Rock","1":"Garage Rock","2":"Blues Rock","3":"POP"} 

Я хотел бы рассмотреть возможность хранения ваших данных в лучшем формате. Нормализованная база данных будет выглядеть примерно так:

 albums -id -name genres -id -name album_genre -album_id -genre_id 

album_genre будет удерживать один (альбом) во многих (жанрах) отношениях:

 album_id genre_id 1 2 1 3 1 10 

Получение итогов так же просто, как:

 SELECT b.id AS genre_id, b.name AS genre_name, COUNT(a.genre_id) as total FROM album_genre a JOIN genres b ON a.genre_id = b.id GROUP BY a.genre_id ORDER BY total DESC 

Эта модель более гибкая, чем хранение отдельного списка запятой. Например, он также делает процесс фильтрации альбомов по жанру простым и точным.