Если бы кто-нибудь мог мне помочь здесь, я был бы бесконечно благодарен, так как провел около двух полных дней, пытаясь заставить это работать. Я хочу взять два многомерных массива и сравнить их, затем удалить любые дубликаты записей.PHP Многомерные массивы - удалить дубликаты
Сценарий: Значения в массиве2 уже были присвоены профилю пользователя. Значения в массиве 1 - это ВСЕ доступные значения, которые пользователь может выбрать. Я хочу, чтобы сравнить два, так что только те уже не назначены, приведены в качестве опции (слева в массиве) ...
$array1 = array(
[0] => array([id] => 3 [name] => Eye Colour)
[1] => array([id] => 1 [name] => Hair Colour)
[2] => array([id] => 5 [name] => Hair Length)
[3] => array([id] => 4 [name] => Height)
);
$array2 = array(
[0] => array([attribute_id] => 3 [name] => Eye Colour [active] => 1)
[1] => array([attribute_id] => 5 [name] => Hair Length [active] => 1))
);
array_diff РНР() функция не работает с многомерными массивами, и я «у нас был хороший поиск, но он не может найти ничего, что сработает для меня!
В результате на основе вышеуказанных двух массивов должны быть:
$array1 = array(
[0] => array([id] => 1 [name] => Hair Colour)
[1] => array([id] => 4 [name] => Height)
);
[АКТИВНЫЙ] поле не имеет значения, так что я просто нужно, чтобы сравнить идентификатор и поля Имя. Я понимаю, что имя двух полей id отличается, но было бы больно их изменять, поскольку они являются именами столбцов базы данных.
Необходимо полностью удалить массив, а не только значения. У меня были проблемы с предыдущими попытками, когда он оставляет массив() там, а затем это вызывает проблемы, когда я перебираю массив, генерирующий поля, которые пользователь может выбрать.
Пожалуйста, помогите. Я куплю тебе много пива! :)
Спасибо, Стив
Привет Крис, спасибо большое за не торопясь написать это - он отлично работает и именно то, что мне нужно. Я не уверен, есть ли более эффективный способ сделать это? Я просто знаю, что он будет циклически перемещаться через $ array2 несколько раз, что может немного отстать, когда есть большая пользовательская база. Тем не менее, я очень благодарен за ваше время и знания. Большое спасибо, Steve – SigmaSteve
Спасибо! Его 1ам здесь и тысячи строк кода позже, ваше решение - единственное, что на самом деле делает то, что он должен и имеет хорошие комментарии! –