создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

Массивы (многомерные массивы). Удаление повторяющихся элементов в массиве на php. Задание a1

Главная.

Задачи на общий уровень владения языком

ответом на каждую из задач должен быть код

Для всех заданий с массивами задан многомерный массив, элементы которого могут содержать одинаковые id:

$array = [

[id => 1, date => "12.01.2020", name => "test1" ...],

[id => 2, date => "02.05.2020", name => "test2" ...],

[id => 4, date => "08.03.2020", name => "test4" ...],

[id => 1, date => "22.01.2020", name => "test1" ...],

[id => 2, date => "11.11.2020", name => "test4" ...],

[id => 3, date => "06.06.2020", name => "test3" ...],

]

Все решения постараться реализовать НЕ используя циклы for / foreach.

1. выделить уникальные записи (убрать дубли) в отдельный массив. в конечном массиве не должно быть элементов с одинаковым id.

На выходе:

$array = [

[id => 1, ...],

[id => 2, ...],

[id => 4, ...],

[id => 3, ...],

]

Примеры

Пример 1

<? $a0 = array ("Красный", "Желтый", "Красный", "Белый", "Красный"); $r0 = array_unique ($a0); print_r ($r0) ?>

Array ( [0] => Красный [1] => Желтый [3] => Белый )

<? $a1 = array ("Репа", "Лук", "Репа", "Мак", "Репа"); $r1 = array_diff ($a1, array_diff_assoc ($a1, array_unique ($a1))); print_r ($r1) ?>

Array ( [1] => Лук [3] => Мак )

<? $a2 = array ("Бак", "Таз", "Бак", "Ваза", "Бак"); $r2 = array_diff_assoc ($a2, array_unique ($a2)); print_r ($r2) ?>

Array ( [2] => Бак [4] => Бак )

Объяснение:

С помощью array_unique удаляются уникальные значения.

С помощью array_diff_assoc находятся расхождения с учетом ключей.

С помощью array_diff, который не учитывает ключи, убираются эти повторения.

Пример 2

В массиве нужно удалить дубликаты с одинаковым id, другие элементы массива не важны.

<? $b1 = array (

array ('id' => 1, 'name' => 'Дом', 'price' => 5),

array ('id' => 1, 'name' => 'Дом', 'price' => 6),

array ('id' => 2, 'name' => 'Кол', 'price' => 3),

);

function q1 ($b1, $k1) {$t1 = $k1_a1 = array(); $i1 = 0; foreach ($b1 as $v1) {if (!in_array ($v1[$k1], $k1_a1)) {$k1_a1[$i1] = $v1[$k1]; $t1[$i1] = $v1;} $i1++;} return $t1;};

$b1 = q1 ($b1, 'id'); print_r ($b1) ?>

Результат:

Array ( [0] => Array ( [id] => 1 [name] => Дом [price] => 5 ) [2] => Array ( [id] => 2 [name] => Кол [price] => 3 ) )

Array ( [0] => Array ( [id] => 1 [name] => Дом [price] => 5 ) [2] => Array ( [id] => 2 [name] => Кол [price] => 3 ) )

Решение:

<? function q2 ($array, $k2) {$t2 = $d2 = array(); $i2 = 0; foreach ($array as $v2) {if (!in_array ($v2[$k2], $d2)) {$d2[$i2] = $v2[$k2]; $t2[$i2] = $v2;} $i2++;} return $t2;}; $b2 = q2 ($array, 'id'); print_r ($b2) ?>

Array ( [0] => Array ( [id] => 1 [date] => 12.01.2020 [name] => test1 ) [1] => Array ( [id] => 2 [date] => 02.05.2020 [name] => test2 ) [2] => Array ( [id] => 4 [date] => 08.03.2020 [name] => test4 ) [5] => Array ( [id] => 3 [date] => 06.06.2020 [name] => test3 ) )

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting