Razdvajanje istih / razlicitih vrijednosti PHP multidimenzionalni asocijativni niz [ samo za experte ] :)

Pozdrav momci,

Pokusavam da napravim funkciju koja ce mi ici kroz multi niz i nakon sto prodje kroz isti formirati novi niz koji je naveden dole u primjeru. Taj novi niz treba u “korijenju” da ima samo one key -> value koji su isti u svim pod nizovima, dok razliciti trebaju da idu pod kljuc ‘diffValues’.

<?php
    Array
    (
        [0] = Array
            (
                [itemi] = Array
                    (
                        [0] = Array
                            (
                                [Glavna Instanca] = VR1
                                [Druga Instanca] = F2
                                [Treca Instanca] = VR3
                                [Cetvrta Instanca] = D4
                            )

                    [1] = Array
                        (
                            [Glavna Instanca] = VR1
                            [Druga Instanca] = F2
                            [Treca Instanca] = VR3
                            [Cetvrta Instanca] = D4
                        )

                    [2] = Array
                        (
                            [Glavna Instanca] = VR1
                            [Druga Instanca] = F2
                            [Treca Instanca] = VR333
                            [Cetvrta Instanca] = D444
                        )

                    [3] = Array
                        (
                            [Glavna Instanca] = VR1
                            [Druga Instanca] = F2
                            [Treca Instanca] = VR333
                            [Cetvrta Instanca] = D4
                        )
                );
        );
    );

?>

Novi niz treba da izgleda otprilike ovako:

$newArray = array(
         [Glavna Instanca] = VR1
         [Druga Instanca] = F2
         [differentValues] =>
            array(
                '0' => 
                array(
                    [Treca Instanca] = VR3
                    [Cetvrta Instanca] = D4
                );
                '1' =>
                array(
                    [Treca Instanca] = VR3
                    [Cetvrta Instanca] = D4
                );
                '2' => 
                array(
                    [Treca Instanca] = VR333
                    [Cetvrta Instanca] = D444
                );
                '3' => 
                array(
                    [Treca Instanca] = VR333
                    [Cetvrta Instanca] = D4
                );
            );
    }

Svaka pomoc je dobrodosla.

Pretrci array itemi sa foreach ili array_walk, ili sta ti drago, i koristi array_intersect za dobit “bazni” array (radis intersect dva susjedna arraya, i onda intersect svakog sljedeceg sa dotadasnjim intersectom. Ovisno o tome je li ti bitno pratit i key i value ces odabrat verziju array intersecta (vidi manual, ima vise varijacija na temu).
Kad imas “bazni” array, odnosno zajednicke key=>value svih itema, onda radis array_diff (opet oces li koristit assoc verziju ili ne ovisi sta tocno zelis usporedit) između tog, i svakog itema, i pushas diff u differentValues.
Voila.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Profit Monkey