Łączenie tablic PHP - petla For porownanie tablic

0

Cześć,
Posiadam dwie tablice
$tablica[]

Array
(
    [0] => Array
        (
            [idKategoriiMSQL] => 1
            [nazwaKategoriiMSQL] => Root
        )

    [1] => Array
        (
            [idKategoriiMSQL] => 1
            [nazwaKategoriiMSQL] => Baza
        )

    [2] => Array
        (
            [idKategoriiMSQL] => 2
            [nazwaKategoriiMSQL] => Home
        )

    [3] => Array
        (
            [idKategoriiMSQL] => 2
            [nazwaKategoriiMSQL] => Strona g?�wna
        )

    [4] => Array
        (
            [idKategoriiMSQL] => 3
            [nazwaKategoriiMSQL] => Clothes
        )

    [5] => Array
        (
            [idKategoriiMSQL] => 3
            [nazwaKategoriiMSQL] => Clothes
        )
)

$tablica2[]

Array
(
    [0] => Array
        (
            [idCategory] => 1
            [idParent] => 0
            [active] => 1
            [levelDepth] => 0
            [idShopDefault] => 1
        )

    [1] => Array
        (
            [idCategory] => 2
            [idParent] => 1
            [active] => 1
            [levelDepth] => 1
            [idShopDefault] => 1
        )

    [2] => Array
        (
            [idCategory] => 3
            [idParent] => 2
            [active] => 1
            [levelDepth] => 2
            [idShopDefault] => 1
        )
)

I chciałem napisać pętle która będzie porównywać idKategoriiMSQL z $tablica z idCategory z $tablica2. Jeżeli jest ta sama wartość to chciałbym dopisać do $tablica parametry z $tablica2. Niestety mój kod nie działa właściwie.

Mój kod:

for ($n=0;$n< sizeof($tablica);$n++)
        {
            for ($k=0;$k< sizeof($tablica2);$k++)
            {
                if($tablica[$n]['idKategoriiMSQL']==$tablica2[$k]['idCategory'])
                {
                    $tablica[$n]['idParent'] = $tablica2[$k]['idParent'];
                    $tablica[$n]['active'] = $tablica2[$k]['active'];
                    $tablica[$n]['levelDepth'] = $tablica2[$k]['levelDepth'];
                    $tablica[$n]['idShopDefault'] = $tablica2[$k]['idShopDefault'];
                }
                $k++;
            }
            $n++;
        }

Wynikiem tego kodu jest tablica

Array
(
    [0] => Array
        (
            [idKategoriiMSQL] => 1
            [nazwaKategoriiMSQL] => Root
            [idParent] => 0
            [active] => 1
            [levelDepth] => 0
            [idShopDefault] => 1
        )

    [1] => Array
        (
            [idKategoriiMSQL] => 1
            [nazwaKategoriiMSQL] => Baza
        )

    [2] => Array
        (
            [idKategoriiMSQL] => 2
            [nazwaKategoriiMSQL] => Home
        )

    [3] => Array
        (
            [idKategoriiMSQL] => 2
            [nazwaKategoriiMSQL] => Strona g?�wna
        )

    [4] => Array
        (
            [idKategoriiMSQL] => 3
            [nazwaKategoriiMSQL] => Clothes
            [idParent] => 2
            [active] => 1
            [levelDepth] => 2
            [idShopDefault] => 1
        )

    [5] => Array
        (
            [idKategoriiMSQL] => 3
            [nazwaKategoriiMSQL] => Clothes
        )
)

Czy ktoś z Was widzi gdzie popełniłem błąd w kodzie? Dlaczego kod nie działa tak jak powinien?

0

Usuń $k++; i $n++; z dołu kodu, bo robisz podwójną inkrementację i Ci przeskakują klucze.

0

Super dzięki.
Faktycznie pomogło. Przyzwyczajenia z innego języka programowania jeszcze w głowie pozostały.

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