TransWikia.com

Удаление дубликатов массива с перебором значений

Stack Overflow на русском Asked by VALIKHAN on December 2, 2021

Имеется массив. Нужно вывести уникальные значения массива по REQUESTID

  1. перебор начинается с наименьшего DATAORDER;
  2. если встречается STATUSID = 1 или 3 , то оставляем этот элемент, а остальные удаляем;
  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
        )       
)

One Answer

$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);
?>

Answered by Bloom on December 2, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP