Autor Zpráva
CarlosK
Profil *
Dobrý den, potřebuji sloučit pole podle určitých pravidel:

Mám pole A a B, obsahují objekty:

A:
array(
'Objekt 1',
'Objekt 2'
)

B:
array(
'Objekt 1',
'Objekt 3'
)

Pravidla:
Pokud objekt z A existuje v B - použít objekt z A //v tomto případě má přednost objekt "Objekt 1" v poli A - ponechat
Pokud objekt z A neexistuje v B - smazat objekt A //v tomto případě smazat "Objekt 2" z pole A
Pokud objekt z B neexistuje v A - Přesunout objekt z B do A //v tomto případě přesunout "Objekt 3" z pole B do pole A

Výsledek bude vypadat takto:
array(
'Objekt 1', //z pole A
'Objekt 3' //z pole B
)

Předem děkuji za odpovědi
Tori
Profil
Šlo by to např. takhle, ale asi to bude dost náročné na paměť u větších polí/objektů:
$vysledek = array_merge(array_intersect($a, $b), array_diff($b, $a)); // opačné pořadí polí je úmyslně
unset($a, $b); // pokud je dál nepotřebujete
Pokud by v obou polích byly nějaké jednoznačné klíče, určující ty objekty (tzn. Objekt 1 by měl stejný klíč v poli $a i $b), šlo by imho i cyklem vyházet položky z $a + mergovat do něj položky z $b (isset je méně náročné než in_array a array_merge se u čísl.polí chová jinak). A navíc byste se mohl sám rozhodnout, jestli budete porovnávat položky pomocí == nebo ===.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: