как я могу получить дубликат многомерного массива в переполнении стека

У меня есть многомерный массив,

   Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
[d] => 4
)

[1] => Array
(
[a] => 1
[b] => 5
[c] => 3
[d] => 4
)

[2] => Array
(
[a] => 1
[b] => 2
[c] => 3
[d] => 4
)

)

посмотрите на первый индекс (или ноль) и третий индекс (номер два индекса)

значения в a, b, c, d равны 1,2,3,4

предполагая, что массив равен или ничем не отличается от них,

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

Я уже использовала array_unique,

это результат:

    Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
[d] => 4
)

[1] => Array
(
[a] => 1
[b] => 5
[c] => 3
[d] => 4
)

)

но я просто хочу получить дубликаты данных, а не удалять дубликаты данных

что я должен делать?

спасибо раньше.

[ДЕЛО ЗАКРЫТО]

// первый: получить все данные, если данные одинаковые / дубликаты, берут только одни данные

$unique = array_unique($data, SORT_REGULAR);

// затем получаем данные, которые дублируют

$diffCellUniq = array_diff_key($data, $unique);

// выводим результат

print_r($diffCellUniq); exit;Array
(
[2] => Array
(
[a] => 1
[b] => 2
[c] => 3
[d] => 4
)

)

1

Решение

// first : get all data, if the data same / duplicate take only one data

$unique = array_unique($data, SORT_REGULAR);

// then, get the data which duplicate with

$diffCellUniq = array_diff_key($data, $unique);

// so print the result

print_r($diffCellUniq); exit;

Array
(
[2] => Array
(
[a] => 1
[b] => 2
[c] => 3
[d] => 4
)

)
0

Другие решения

Чтобы получить только дублирующие элементы, сохраняя их ключи — используйте следующий подход с array_keys, array_fill_keys, array_merge, array_unique а также array_intersect_key функции:

$dup_keys = [];
foreach ($arr as $item) {  // $arr is your initial array
$keys = array_keys($arr, $item);
if (count($keys) > 1) {
$dup_keys = array_merge($dup_keys, $keys);
}
}

$dup_keys = array_unique($dup_keys);
$dup_items = array_intersect_key($arr, array_fill_keys($dup_keys, 0));

print_r($dup_items);

Выход:

Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
[d] => 4
)

[2] => Array
(
[a] => 1
[b] => 2
[c] => 3
[d] => 4
)
)

ДЕМО ссылка

0

Поскольку array_unique не работает с многомерным массивом, один из способов добиться этого — сериализовать этот массив и применить к нему функцию array_unique.

Как только уникальная функция будет применена, мы можем отменить ее сериализацию и вернуть ее в формате массива.

Ссылка: http://php.net/manual/en/function.array-unique.php#97285

Попробуй это:

$input = array_unique(array_map("serialize", $input))
$input = array_map("unserialize", $input);
-1

Вы должны использовать array_unique:

$var = array_unique($YOUR ARRAY, SORT_REGULAR);

Редактировать:

<?php
$your_array = array (
0 => array
(
'a' => '1',
'b' => '2',
'c' => '3',
'd' => '4',
),

1 => array
(
'a' => '1',
'b' => '5',
'c' => '3',
'd' => '4',
),

2 => array
(
'a' => '1',
'b' => '2',
'c' => '3',
'd' => '4',
),
);

$tmpArray = array ();

foreach ($your_array as $row)
if (!in_array($row, $tmpArray)) array_push($tmpArray, $row);

var_dump($tmpArray);
?>

Проверьте также онлайн пример https://eval.in/631417

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector