dromenkojunior
@dromenkojunior
Tableau, python, SQL

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

Я только учусь, поэтому прошу не бить.

Нужно удалить дубликаты из массива вида:
$floor= array(
array('number' => '321', 'type' => 'yes'),
array('number' => '432', 'type' => 'car'),
array('number' => '432', 'type' => 'job'),
array('number' => '432', 'type' => 'job'),
);

Пытаюсь писать так:

$floor= array(
array('number' => '321', 'type' => 'yes'),
array('number' => '432', 'type' => 'car'),
array('number' => '432', 'type' => 'job'),
array('number' => '432', 'type' => 'job'),
);
foreach ($phone as $arr) {
foreach ($arr as $elem) {
for ($i = 0; $i < count($arr); $i++)
if ($i == $arr[$elem]) {
unset ($arr[$elem]);
}
}
}

Но что-то не получается :(
  • Вопрос задан
  • 302 просмотра
Решения вопроса 1
mr_T
@mr_T
Web-разработчик
Вообще если ты пишешь $arr[$elem], то стоит начать с чего-то более простого. А так решение может быть таким:

$unique = array();
foreach ($phone as $value) {
	$key = $value['type'] . $value['number'];
	if (!isset($unique[$key])) $unique[$key] = $value;
}

// при необходимости
$unique = array_values($unique);

Вариант с serialize, конечно, сработает, но только если порядок задания ключей массива будет всегда один и тот же. Ну и я почти уверен, что это мягко говоря не самое быстрое решение. Да и вообще какое-то оно странное... С функциональным подходом так лучше не перебарщивать)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@petrtr
array_unique($phone, SORT_REGULAR);
Ответ написан
He11ion
@He11ion
PHP-monkey
$phone = array_map("unserialize", array_unique(array_map("serialize", $phone)));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы