Убрать повторяющиеся значения из двумерного массива

grigori

( ͡° ͜ʖ ͡°)
Команда форума
zerkms
1. дело не в копировании, а в повторных проверках элементов, которые уже исключены на предыдущих проверках.
Я их удаляю через unset() и больше не обрабатываю.
2. я уже писал, у нас обоих тут 3 цикла: у тебя 2й спрятан в in_array, 3й - в сериализации.
3. зависит от степени дублирования данных и объема ;) см. п.1

кстати, а че, 8 строк - это слишком сложный алгоритм?
сортировки, хеши, etc - проще, чем классический обход стека?
 

fixxxer

К.О.
Партнер клуба
1. Ты уверен, что тут не работает COW?
PHP:
fixxxer@localhost ~$ cat 1.php
<?php

$a = array(1);

debug_zval_dump($a);

foreach ($a as $k => $i) {
    debug_zval_dump($a);
    $a[$k] = 100;
    debug_zval_dump($a);
}

fixxxer@localhost ~$ php 1.php
array(1) refcount(2){
  [0]=>
  long(1) refcount(1)
}
array(1) refcount(4){
  [0]=>
  long(1) refcount(2)
}
array(1) refcount(2){
  [0]=>
  long(100) refcount(1)
}
работает
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
COW вообще ни при чем
я использую each только для того, чтобы пропускать удаленные значения

если на входе будет полностью дублирущийся массив, во втором алгоритме будет только 1*N сравнений, т.к. каждое сравнение будет удалять дубликат, и в первом цикле будет одна итерация

короче, я просто хотел более интересно решить задачку :)
 
Сверху