Как удалить дублирующиеся значения из многомерного массива в PHP

Предполагая, что ваша ссылка находится внутри цикла, например:

 <% MyMusic.each.do |my_music| %>

Вы можете установить вид:

<%= link_to download_path(my_music_id: my_music.id), remote: true do %>
Download
<% end %>

И контроллер:

def download
  @my_music = MyMusic.find(params[my_music_id])
  @my_music.update_attributes(email: current_user.email) 
  send_data @my_music.download.read, filename: @my_music.download
end

Но это хранит для каждого my_music последнего пользователя, который его скачал. Если вы хотите сохранить, кто загрузил то, что вам нужно, чтобы создать таблицу соединения, например users_downloads со столбцами user_id и my_music_id, то установите правильные ассоциации.

287
задан Ian 20 November 2008 в 16:50
поделиться

3 ответа

Вот еще один способ. Промежуточные переменные не сохраняются.

Мы использовали это для дедупликации результатов из множества перекрывающихся запросов.

$input = array_map("unserialize", array_unique(array_map("serialize", $input)));
616
ответ дан 23 November 2019 в 01:46
поделиться

Простое решение:

array_unique($array, SORT_REGULAR)
0
ответ дан 23 November 2019 в 01:46
поделиться

Легко читаемое решение, вероятно, не самое эффективное:

function arrayUnique($myArray){
    if(!is_array($myArray))
        return $myArray;

    foreach ($myArray as &$myvalue){
        $myvalue=serialize($myvalue);
    }

    $myArray=array_unique($myArray);

    foreach ($myArray as &$myvalue){
        $myvalue=unserialize($myvalue);
    }

    return $myArray;

} 
1
ответ дан 23 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: