Я думаю, что, поскольку $ selected является многомерным массивом, $ selected [0] совпадает с $ selected [1], массивом.
Насколько я знаю, array_unique тестирует (строка) $ value1 === (строка) $ value2, поэтому вы получаете 'Array' == 'Array'.
Вы действительно не объяснили, что делает элемент "уникальным" (URI?). Чтобы сравнить целые структуры, вы можете попробовать пройтись по $ selected, сериализовать значения (используя serialize ()) и затем вызвать array_unique для этих значений. Затем вызовите unserialize, чтобы вернуть массив в нормальное состояние.
<?php
function multi_array_unique($arr) {
foreach ($arr as &$elm) {
$elm = serialize($elm);
}
$arr = array_unique($arr);
foreach ($arr as &$elm) {
$elm = unserialize($elm);
}
return $arr;
}
?>
Это не самое эффективное решение, но я бы сначала проверил, прежде чем беспокоиться об этом.
См .: http://codepad.org/6cs5b0sm