src/Traits/FieldCollectionCommomMethods.php
private function collectionCheckDistinct($v) : string
    {
        $r = "valid";

        if ($this->isReference() === true) {
            $strArr = [];

            foreach ($v as $i => $vv) {
                $strArr[] = $this->createStringToCompareReferences($vv);
            }

            // Se há  uma única chave para distinção dos campos
            // elimina objetos que são considerados inválidos para fins de comparação.
            if (count($this->collectionGetDistinctKeys()) === 1) {
                $compareV = [];
                $compareS = [];

                foreach ($v as $i => $vv) {
                    if ($strArr[$i] !== undefined && $strArr[$i] !== "0" && $strArr[$i] !== "") {
                        $compareV[] = $vv;
                        $compareS[] = $strArr[$i];
                    }
                }

                $v      = $compareV;
                $strArr = $compareS;
            }
        } else {
            $strArr = [];
            
            foreach ($v as $i => $vv) {
                $tmpVal     = $this->individualValue_RetrieveInStorageFormat($vv);
                $strArr[]   = TryParse::toString($tmpVal);
            }
        }

        if (count($v) > count(array_unique($strArr))) {
            $r = "error.dm.field.collection.constraint.distinct.violated";
        }

        return $r;
    }
private function collectionCheckDistinct($v) : string
    {
        $r = "valid";

        if ($this->isReference() === true) {
            $strArr = [];

            foreach ($v as $i => $vv) {
                $strArr[] = $this->createStringToCompareReferences($vv);
            }

            // Se há  uma única chave para distinção dos campos
            // elimina objetos que são considerados inválidos para fins de comparação.
            if (count($this->collectionGetDistinctKeys()) === 1) {
                $compareV = [];
                $compareS = [];

                foreach ($v as $i => $vv) {
                    if ($strArr[$i] !== undefined && $strArr[$i] !== "0" && $strArr[$i] !== "") {
                        $compareV[] = $vv;
                        $compareS[] = $strArr[$i];
                    }
                }

                $v      = $compareV;
                $strArr = $compareS;
            }
        } else {
            $strArr = [];
            
            foreach ($v as $i => $vv) {
                $tmpVal     = $this->individualValue_RetrieveInStorageFormat($vv);
                $strArr[]   = TryParse::toString($tmpVal);
            }
        }

        if (count($v) > count(array_unique($strArr))) {
            $r = "error.dm.field.collection.constraint.distinct.violated";
        }

        return $r;
    }
Verifica se na coleção passada há itens iguais.

Em coleções de modelos de dados será levado em conta
as definições passadas em "distinctKeys".

@param       mixed $v
Coleção que será verificada.

@return      string