PHP

Remove Duplicate Associative Arrays by Key

Clean up an array of associative arrays in PHP by efficiently removing duplicate entries, ensuring each unique record is based on a specific key's value.

<?php

function removeDuplicateAssociativeArraysByKey(array $array, string $uniqueKey): array
{
    $seenKeys = [];
    $uniqueArray = [];
    foreach ($array as $item) {
        if (isset($item[$uniqueKey]) && !isset($seenKeys[$item[$uniqueKey]])) {
            $uniqueArray[] = $item;
            $seenKeys[$item[$uniqueKey]] = true; // Mark this key as seen
        }
    }
    return $uniqueArray;
}

$items = [
    ['id' => 1, 'name' => 'Apple', 'price' => 1.0],
    ['id' => 2, 'name' => 'Banana', 'price' => 0.5],
    ['id' => 1, 'name' => 'Apple', 'price' => 1.2], // Duplicate ID
    ['id' => 3, 'name' => 'Orange', 'price' => 0.7],
    ['id' => 2, 'name' => 'Banana', 'price' => 0.6], // Duplicate ID
];

$uniqueItems = removeDuplicateAssociativeArraysByKey($items, 'id');
// print_r($uniqueItems);
/*
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Apple
            [price] => 1
        )

    [1] => Array
        (
            [id] => 2
            [name] => Banana
            [price] => 0.5
        )

    [2] => Array
        (
            [id] => 3
            [name] => Orange
            [price] => 0.7
        )

)
*/
How it works: This function `removeDuplicateAssociativeArraysByKey` filters an array of associative arrays, keeping only the first occurrence of an item based on the value of a specified `$uniqueKey`. It iterates through the array, using a `$seenKeys` auxiliary array to track which unique key values have already been processed, ensuring no duplicates are added to the resulting `$uniqueArray`.

Need help integrating this into your project?

Our team of expert developers can help you build your custom application from scratch.

Hire DigitalCodeLabs