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

Porównywanie dwóch sąsiednich elementów tablicy
K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
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 ?

Kopiuj
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

Freja Draco
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3394
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.

K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

@Freja Draco: Dobrze, spróbuję

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
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.

K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.