Porównywanie dwóch sąsiednich elementów tablicy

0

Witam, próbuję przeszukać tablicę względem powtarzających się elementów (tablic). W pętli foreach iteruję główna tablicę, następnie przypisuję pierwszy element ($collectionValue) do zmiennej by według niego porównywać kolejne elementy i jeśli się powtarzają to powinno wyświetlić wartości klucza $collectionValue['parameters'], jeśli nie zostaną znalezione powtórzenia to następuje przejście do kolejnego elementu w tablicy itd. W jaki sposób powinnam zmodyfikować kod aby móc porównywać wszystkie elementy według pierwszego elementu, następnie drugiego itd ?

public function filterCollectionsParameters()
    {
        $arrayCollectionsToFiltrate = ParametersCategory::parametersCollectionTagsAllegro();
        // print_r($arrayCollectionsToFiltrate);
        // $n = 0;

        foreach($arrayCollectionsToFiltrate as $collectionValue)
        {
            print_r($collectionValue);
            echo "</br>";
            // print_r($collectionValue['collection']);
            // echo "</br>";

            $currentElement = $collectionValue;
            if($currentElement == next($collectionValue))
            {

                print_r($collectionValue['parameters']);
                echo "</br>";
            }

            // $n+=1;
        }
    }

Przykładowe tablice po których przechodzi pętla foreach (czyli $collectionValue):

Array ( [collection] => Kolekcja-Pierwsza [parameters] => Array ( [0] => parametr1 [1] => paramatr2 [2] => parametr3 [3] => parametr4 [4] => parametr5 [5] => parametr6 ) )
Array ( [collection] => Kolekcja-Druga [parameters] => Array ( [0] => parametr1 [1] => paramatr2 [2] => parametr3 ) )
Array ( [collection] => Kolekcja-Pierwsza [parameters] => Array ( [0] => parametr1 [1] => paramatr2 [2] => parametr3 [3] => parametr4 ) )

Dziękuję za wszelką pomoc

3

Ja bym posortowała tablicę po badanych elementach, a później przeleciała całą tylko raz, porównując zawartość x i x+1.

0

@Freja Draco: Dobrze, spróbuję

4

W obecnym kodzie pętla iterujesz po $arrayCollectionsToFiltrate z kolei next wywolujesz na $collectionValue zamiast na głównej kolekcji. Tym samym porownujesz obecny element w foreach z drugim w kolejności elementem zmiennej $collectionValue.
Spróbuj zrobić var_dump na porównywanych elementach.

0

@Freja Draco: Sortowanie pomogło, jeszcze muszę dopracować porównywanie ale jest dobrze. Dziękuję

1 użytkowników online, w tym zalogowanych: 0, gości: 1