У меня есть небольшая проблема в php, которую мне трудно объяснить словами. У меня есть ассоциативный массив, содержащий ключ-значение. Я хотел бы сделать функцию (или если она уже есть), которая будет принимать массив в качестве входных данных и удалять дубликаты, но в обоих направлениях.PHP - Сделать ассоциативный массив уникальным, ключ -> значение и значение -> ключ
Например:
В моем массиве у меня есть {а -> Ь} {а -> с} {Ь -> а} {Ь -> с} ...
С этой точки зрения похоже, что нет дубликата, но для меня {a -> b} и {b -> a} дублируются. Поэтому я хотел бы, чтобы функция рассматривала его как дубликат и возвращала только один из них.
Я попытался использовать array_flip/array_unique, чтобы обменять ключ и значения в цикле, но не совсем сработал.
Не могли бы вы помочь найти способ сделать это, даже если это массив большой длины? или если есть php-функция, которая это делает.
Помощь была бы действительно оценена, спасибо.
Существует код, чтобы проиллюстрировать идею:
Для массива, который был бы так:
Array (
[0] => Array ([0] => a [1] => b)
[1] => Array ([0] => a [1] => c)
[2] => Array ([0] => b [1] => a)
[3] => Array ([0] => b [1] => c)
)
Не могли бы вы привести более подробный пример кода? –
Итак, вы хотите только удалить пары, которые идентичны, то есть 'a-> b' &' b-> a', но не 'a-> b' &' a-> c' или 'a-> b' & 'c-> b'? – Alasdair
* {a -> b} {a -> c} * У вас есть несколько ключей с тем же именем (не возможно) ..? Если я правильно понял, если ключ * a * также существует как значение, например * b => a *, это дубликат для вас? Если нет, то [array_diff_assoc()] (http://www.php.net/manual/en/function.array-diff-assoc.php), вероятно, является функцией, которую вы ищете. – kjetilh