2016-05-31 3 views
0

У меня есть массив:Как удалить дубликаты подмассивов из моего многомерного массива?

array:3 [▼ 
    0 => array:1 [▼ 
    "name" => "test#4" 
    ] 
    1 => array:1 [▼ 
    "name" => "C" 
    ] 
    2 => array:1 [▼ 
    "name" => "C" 
    ] 
] 

Я хочу, чтобы получить только уникальные значения:

array:2 [▼ 
    0 => array:1 [▼ 
    "name" => "test#4" 
    ] 
    1 => array:1 [▼ 
    "name" => "C" 
    ] 
] 

Какую функцию PHP я должен использовать?

Я использую array_unique():

$group_array = []; 
foreach ($private_group_devices as $i=>$group) { 
    $group_array[$i]['name'] = $group['group_name']; 
} 
// dd($group_array); 
dd(array_unique($group_array)); 

Но я получаю:

Массив для преобразования строки

+1

Либо 'foreach', либо' array_column' –

ответ

1

Вы можете передать SORT_REGULAR флаг в ваш array_unique вызова следующим образом:

dd(array_unique($group_array, SORT_REGULAR)); 

По умолчанию array_unique пытается преобразовать каждый элемент в строку (что не совсем подходит для массивов). Использование SORT_REGULAR сообщает array_unique для сравнения элементов без преобразования их типов.

+0

Плюс 1 для короче, чем тот, который указан в ссылке. ; p – ihue

+0

Любое решение будет работать, и на самом деле кажется, что мой ответ такой же, как [второй-самый высокий ответ] (http://stackoverflow.com/a/18373723/899126)! При этом существует предостережение об использовании 'array_unique' таким образом; он [не предназначен для работы с многомерными массивами] (http://php.net/manual/en/function.array-unique.php#refsect1-function.array-unique-notes). Это работает, но в зависимости от ситуации может быть какая-то волосатость. –

Смежные вопросы