Удаление дубликатов массива с перебором значений
Имеется массив. Нужно вывести уникальные значения массива по REQUESTID
- перебор начинается с наименьшего DATAORDER;
- если встречается STATUSID = 1 или 3 , то оставляем этот элемент, а остальные удаляем;
- если встречается STATUSID = 2 , то переходим на следующий элемент при условии, что следующий элемент имеется (DATAORDER + 1).
Array
(
[0] => Array
(
[REQUESTID] => 13
[STATUSID] => 1
[DATAORDER] => 3
)
[1] => Array
(
[REQUESTID] => 13
[STATUSID] => 2
[DATAORDER] => 1
)
[2] => Array
(
[REQUESTID] => 13
[STATUSID] => 1
[DATAORDER] => 2
)
[3] => Array
(
[REQUESTID] => 15
[STATUSID] => 1
[DATAORDER] => 2
)
)
Результат перебора:
Array
(
[2] => Array
(
[REQUESTID] => 13
[STATUSID] => 1
[DATAORDER] => 2
)
[3] => Array
(
[REQUESTID] => 15
[STATUSID] => 1
[DATAORDER] => 2
)
)
Ответы (1 шт):
Автор решения: Bloom
→ Ссылка
$arr = array(
"0" => array(
"REQUESTID" => "13",
"STATUSID" => "1",
"DATAORDER" => "3"
),
"1" => array
(
"REQUESTID" => "13",
"STATUSID" => "2",
"DATAORDER" => "1"
),
"2" => array
(
"REQUESTID" => "13",
"STATUSID" => "1",
"DATAORDER" => "2"
),
"3" => array
(
"REQUESTID" => "15",
"STATUSID" => "1",
"DATAORDER" => "2"
)
);
foreach ($arr as $key => $value) {
if($value["STATUSID"]=="1" or $value["STATUSID"]=="3" or $value["DATAORDER"]=="2"){
}else{
unset($arr[$key]);
}
}
foreach ($arr as $key => $value) {
$res[$value["REQUESTID"]]=$value;
}
print_r($res);
?>