Как удалить дубликаты данных в массив - PullRequest
0 голосов
/ 08 мая 2019

Нужна помощь для кода.

Вот мой список массивов, который я хочу удалить два (2) Wi-Fi.

Array
(
    [20-10] => Array
        (
            [facilityCode] => 20
            [facilityGroupCode] => 10
            [order] => 1
            [number] => 1968
            [voucher] => 
            [description] => Year of construction
        )

    [550-70] => Array
        (
            [facilityCode] => 550
            [facilityGroupCode] => 70
            [order] => 1
            [indFee] => 
            [indYesOrNo] => 1
            [voucher] => 
            [description] => Wi-fi
        )

    [20-60] => Array
        (
            [facilityCode] => 20
            [facilityGroupCode] => 60
            [order] => 1
            [indLogic] => 1
            [voucher] => 
            [description] => Shower
        )


    [261-60] => Array
        (
            [facilityCode] => 261
            [facilityGroupCode] => 60
            [order] => 1
            [indFee] => 
            [indYesOrNo] => 1
            [voucher] => 
            [description] => Wi-fi
        )

)

Я также попробовал array_unique();

вот результат:

Array
(
    [0] => Year of construction
    [1] => Shower
    [2] => Wi-fi

)

Но я хочу сохранить код объекта, код объекта, номер заказа и т. Д. Спасибо за любую помощь.

Ответы [ 3 ]

1 голос
/ 08 мая 2019
$itemRows = array(); // Your main array
$descriptionValues = array();

foreach ($itemRows as $itemKey => $itemRow) {
    foreach ($itemRow as $key => $value) {
        if ($key == 'description') {
            if (in_array($value, $descriptionValues)) {
                unset($itemRows[$itemKey]);

                continue 2;
            }

            $descriptionValues[] = $value;
        }
    }
}
1 голос
/ 08 мая 2019

Один вкладыш - все, что может сделать ваше требование,

$result = array_reverse(array_values(array_column(array_reverse($arr), null, 'description')));

Источник ссылка для вашего требования.

1 голос
/ 08 мая 2019
//populate data
$mainArr = array();
$first = array(
    "facilityCode" => 20,
    "facilityGroupCode" => 10,
    "order" => 1,
    "number" => 1968,
    "voucher" => "",
    "description" => "Year of construction",
);
$second = array(
    "facilityCode" => 550,
    "facilityGroupCode" => 70,
    "order" => 1,
    "indFee" => "",
    "indYesOrNo" => 1,
    "voucher" => "",
    "description" => "Wi-fi"
);

$mainArr["20-10"] = $first;
$mainArr["550-70"] = $second;
$mainArr["261-60"] = $second;

//get duplicates
$counter = 0;
$duplicates = array();

foreach ($mainArr as $key=>$val) {
    $counter++;
    if (in_array($key, $duplicates)) continue;
    $i = 0;

    foreach ($mainArr as $key1=>$val1) {
        if ($i < $counter) {
            $i++;
            continue;
        }

        if ($val["description"] == $val1["description"]) {
            array_push($duplicates, $key1);
        }
    }
}

//remove duplicates
foreach($duplicates as $key) {
    unset($mainArr[$key]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...