- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
//возвращает массив без повторяющихся элементов (обязательно должен быть элемент [id])
function arrayUnique($arr)
{
$aResult = array();
$aIDs = array();
foreach($arr as $val)
if (!in_array($val['id'], $aIDs))
{
array_push($aIDs, $val['id']);
array_push($aResult, $val);
}
return $aResult;
}
guest 31.03.2010 15:03 # −0.8
nechin 31.03.2010 15:09 # 0
Проверять нужно по всем элементам, а проверяется только по id.
guest 31.03.2010 15:12 # 0
или это по вашему не элемент?
nechin 31.03.2010 15:14 # 0
guest 31.03.2010 16:25 # 0
nechin 31.03.2010 18:13 # 0
guest 01.04.2010 11:12 # 0
нет прямого доказательства и прямого опровержения. гадать не следует.
не доказал.
Death 31.03.2010 23:15 # −1.2
[i]Вроде накалякал без опечаток[i]
Death 31.03.2010 23:36 # +0.8
а что должно быть если в массиве есть повторения id,
ну т.е. в итоговом массиве какой из повторяющихся id должен быть?
т.к. в примере первый id всё равно попадёт в результирующий массив.
допустим id-шники такие: 1,2,3,4,1,2,1,2,3,6,7,8,9
что на выходе должно быть: 1,2,3,4,6,7,8,9 или же 4,6,7,8,9 ???
nechin 01.04.2010 09:15 # 0
Должно быть 1,2,3,4,6,7,8,9. Т.е. в массиве не должно быть одинаковых массивов (с одинаковым количеством элементов и равными значениями по ключу).
И не факт, что id будет уникален. Поэтому нужна проверка каждого элемента массива. Иначе мы удаляем неуникальные массивы.
Death 01.04.2010 11:47 # 0
В Вашем алгоритме тоже именно так и работает.
guest 01.04.2010 02:17 # 0
if ( ! $aIDs[ $val['id'] ] ) - да и это тоже лучше юзать с isset ...
Да и вообще тему ты не понял .... по всей видимости ... В этой теме ВАЖНО чтобы не было ОДИНАКОВЫХ записей с каким либо ИД ... Видать Ид там не уникален если берется как пример из базы ... и не важно там на сколько отличается информация того и другого типа с одинаковым ИД, так что это В ЛЮБОМ случае гавнокод!
Death 01.04.2010 11:47 # 0
У автора в алгоритме тоже именно так и работает.
guest 13.04.2010 00:13 # 0
а как $arr[$id] = ...;
и проверять не надо. Если $id продублируется, то в массиве будет последний вариант.