Как выбрать уникальные элементы в многомерном массиве, если эти элементы массивы? Например array ( [0]=>array(1,2,3) [1]=>array(1,2,3) [2]=>array(4,5,6) ) Результат array(1,2,3), array(4,5,6)
Из примера не совсем понятно, что проверяться будет. array ( [0]=>array(1,2,3) [1]=>array(1,2,3) [2]=>array(4,5,6) [3]=>array(3,2,1) [4]=>array(1,2,4) [5]=>array(1,2,3,8) [6]=>array(1,2) ) какой результат?
Код (Text): <?php $a[0]=array(1,2,3); $a[1]=array(1,2,3); $a[2]=array(4,5,6); $a[3]=array(3,2,1); $a[4]=array(1,2,4); $a[5]=array(1,2,3,8); $a[6]=array(1,2); $a[7]=array(1,2); $a[8]=array(1,2); $a[9]=array(1,2,8); $a[10]=array(1,2,2); $a[11]=array(1,2,3); $c=count($a); $b[0]=true; for($i=0;$i<$c;$i++) if($b[$i]) for($j=$i+1;$j<$c;$j++) if($a[$i]!=$a[$j]) $b[$j]=true; else $a[$j]=null; echo "<pre>"; for($i=0;$i<$c;$i++) if($b[$i]) print_r($a[$i]); echo "</pre>"; ?> Добавлено спустя 5 минут 50 секунд: Или даже так: Код (Text): <?php $a[0]=array(1,2,3); $a[1]=array(1,2,3); $a[2]=array(4,5,6); $a[3]=array(3,2,1); $a[4]=array(1,2,4); $a[5]=array(1,2,3,8); $a[6]=array(1,2); $a[7]=array(1,2); $a[8]=array(1,2); $a[9]=array(1,2,8); $a[10]=array(1,2,2); $a[11]=array(1,2,3); $c=count($a); for($i=0;$i<$c;$i++) for($j=$i+1;$j<$c;$j++) if($a[$i]==$a[$j]) $a[$j]=null; echo "<pre>"; print_r($a); echo "</pre>"; ?> Добавлено спустя 12 минут 20 секунд: А для того, чтобы совсем какать бабочками, можно сделать даже так: Код (Text): <?php $a[0]=array(1,2,3); $a[1]=array(1,2,3); $a[2]=array(4,5,6); $a[3]=array(3,2,1); $a[4]=array(1,2,4); $a[5]=array(1,2,3,8); $a[6]=array(1,2); $a[7]=array(1,2); $a[8]=array(1,2); $a[9]=array(1,2,8); $a[10]=array(1,2,2); $a[11]=array(1,2,3); $c=count($a); $i=0; metka1: $j=$i+1; metka2: if($a[$i]==$a[$j]) $a[$j]=null; $j++; if($j<$c) goto metka2; $i++; if($i<$c) goto metka1; echo "<pre>"; print_r($a); echo "</pre>"; ?> Добавлено спустя 9 минут 47 секунд: Уникальность по разным критериям можно определять. Количество элементов, порядок элементов, совпадение каких-то отдельных элементов. Из первого примера не понятно, считать ли уникальными array(1,2,3) и array(1,2,5) - поскольку во втором встречаются не уникальные элементы "1" и "2"
Не понимаю, в чем проблема ? У вас есть фура яшиков с фруктами, как вытащить оттуда уникальные? 1. Создать ящик для уникальных фруктов 2. Открыть каждый ящик с фруктаими, взять каждый фрукт из ящика, и если его нет в "уникальном" ящик - положить его туда. in_array вам в помощь Домашнее задание: 1. как вытащить уникальные значения из одномерного массива? 2. для чего нам нужен п.1 ?
Но тут, как я понял, такая фигня не работает: Код (Text): $c=count($a); $i=0; metka1: $j=$i+1; metka2: if($a[$i]==$a[$j]) $a[$j]=null; $j++; if($j<$c) goto metka2; $i++; if($i<$c) goto metka1; Потому что имеет значение, в каком порядке лежат фрукты в ящике.
Вариантов проще, кроме как тупо сравнение элементов каждого массива со всеми элементами других массивов нет?
я полагаю, вам нужна array_unique, только она для одномерных массивов, но к официальной документации, в комментариях, есть пример для многомерных.
если последовательность элементов в массиве всегда одинаковая, то можно сделать финт ушами через имплод/эксплод =)
да блин. Код (Text): $unique = array(); function recursive($array) { global $unique; .... if (!in_array($val, $unique)) { array_push($unique, $val);